推荐新手使用UniSharp/laravel-filemanager快速搭建安全文件管理界面,需Laravel 5.8+与PHP≥7.3,安装后必须执行storage:link、配置auth中间件、设置APP_URL、限制MIME类型并禁用PHP执行。

想在Laravel项目中快速搭建一个安全、易用、可扩展的文件上传与管理界面,又不想从零写控制器和前端交互逻辑?直接集成成熟方案是最省力的选择。
安装UniSharp/laravel-filemanager(推荐新手)
这一步必须在已配置好Laravel 5.8+且PHP版本≥7.3的项目中执行,低于该版本会触发依赖冲突报错。
运行命令安装核心包:composer require unisharp/laravel-filemanager
发布配置文件,生成config/lfm.php:php artisan vendor:publish --tag=lfm_config
发布前端静态资源(含JS/CSS/图标),缺此步将无法加载界面:php artisan vendor:publish --tag=lfm_public
【关键前提】必须先执行php artisan storage:link,否则所有上传文件将不可访问——因为Laravel默认把public/storage作为软链接指向storage/app/public,而filemanager默认读取的就是这个路径。
配置路由与访问权限
打开routes/web.php,在受保护区域添加路由组:
Route::group(['prefix' => 'laravel-filemanager', 'middleware' => ['web', 'auth']], function () {<br> \UniSharp\LaravelFilemanager\Lfm::routes();<br>});
⚠️ 不加auth中间件等于把服务器后门敞开——攻击者可通过/laravel-filemanager直传WebShell。
确保APP_URL在.env中已设为完整域名(如https://your-site.com),否则缩略图和文件URL会拼出http://localhost:8000/storage/xxx导致404。
设置默认磁盘与路径
编辑config/lfm.php,找到'leftDisk' => 'public'这一行。
若你已在config/filesystems.php中定义了'uploads'磁盘(指向public/uploads),就把'leftDisk'改成'uploads'。
修改'leftPath' => 'images',表示左侧面板默认打开public/uploads/images目录。
保存后无需重启服务,刷新/laravel-filemanager即可生效。
对接CKEditor或TinyMCE
方法一:CKEditor 4.x 配置(最常用)
在CKEditor初始化代码中加入filebrowserImageBrowseUrl: '/laravel-filemanager?type=Images',
再加一行filebrowserImageUploadUrl: '/laravel-filemanager/upload?type=Images&_token=' + $('meta[name="csrf-token"]').attr('content'),
方法二:TinyMCE 6.x 配置
启用image_advtab: true后,在images_upload_url填/laravel-filemanager/upload?type=Images,并确保请求头带X-CSRF-TOKEN值。
注意:两种编辑器都必须确保页面已注入Laravel的CSRF meta标签,否则上传会返回419错误。
安全加固四步操作
第一步:禁止未登录用户访问/laravel-filemanager——已在路由中通过auth中间件完成。
第二步:限制可上传类型,在config/lfm.php中修改'valid_mime' => ['image/jpeg', 'image/png', 'application/pdf'],删掉'application/php'等危险类型。
第三步:关闭文件重命名自动开启功能,将'rename_file' => false,避免上传shell.php.jpg绕过检测。
第四步:在Nginx配置中屏蔽对.php文件的直接执行(仅限public磁盘):location ~* \.php$ { deny all; }。


















