Laravel8公开目录改为public_html后Unisharp文件管理器预览失效问题
Laravel 8修改公开目录为public_html后Unisharp Laravel File Manager预览异常解决方案
以下是可直接落地的排查修复步骤:
- 第一步:修复存储软链接映射
原有php artisan storage:link命令默认会在public目录生成软链接,你已经修改公开目录为public_html,需要先删除原有错误软链接,重新生成正确映射:
Linux/Mac执行命令:ln -s 你的项目绝对路径/storage/app/public 你的项目绝对路径/public_html/storage
Windows执行命令(需以管理员身份运行终端):mklink /J 你的项目绝对路径\public_html\storage 你的项目绝对路径\storage\app\public - 第二步:校验Unisharp LFM配置参数
打开config/lfm.php逐一核对以下配置项:- 确认
url_prefix参数值为站点对外访问的资源前缀,无需携带public_html(该目录是服务端本地路径,对外不可见),示例配置:'url_prefix' => 'storage', - 确认
base_url参数值和你.env文件里的APP_URL一致,不要携带/public后缀,示例配置:'base_url' => env('APP_URL'), - 确认
filesystem参数值为public,保持和Laravel公共存储磁盘映射一致。
- 确认
- 第三步:校验Laravel公共存储磁盘配置
打开config/filesystems.php,找到disks数组下的public配置项,确保root参数使用public_path()函数生成路径:
你已经在AppServiceProvider中绑定了'public' => [ 'driver' => 'local', 'root' => public_path('storage'), 'url' => env('APP_URL').'/storage', 'visibility' => 'public', ],path.public指向public_html,public_path()会自动返回public_html的绝对路径,无需额外修改。 - 第四步:清除缓存后测试
执行以下命令清理Laravel配置、路由缓存:php artisan config:clear && php artisan route:clear
清理浏览器缓存后重新上传文件测试预览,也可以直接拼接已上传文件的公网URL验证资源是否可正常访问:比如上传的文件路径为public_html/storage/photos/test.jpg,对应的访问URL应为https://你的域名/storage/photos/test.jpg,如果直接访问该URL无法打开,先排查站点域名解析、伪静态配置问题。
内容的提问来源于stack exchange,提问作者Jim
相关产品推荐
相关产品推荐

