You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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逐一核对以下配置项:
    1. 确认url_prefix参数值为站点对外访问的资源前缀,无需携带public_html(该目录是服务端本地路径,对外不可见),示例配置:
      'url_prefix' => 'storage',
    2. 确认base_url参数值和你.env文件里的APP_URL一致,不要携带/public后缀,示例配置:
      'base_url' => env('APP_URL'),
    3. 确认filesystem参数值为public,保持和Laravel公共存储磁盘映射一致。
  • 第三步:校验Laravel公共存储磁盘配置
    打开config/filesystems.php,找到disks数组下的public配置项,确保root参数使用public_path()函数生成路径:
    'public' => [
        'driver' => 'local',
        'root' => public_path('storage'),
        'url' => env('APP_URL').'/storage',
        'visibility' => 'public',
    ],
    
    你已经在AppServiceProvider中绑定了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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 22:45:05