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

Laravel+Livewire项目部署至主机后图片无法显示的解决方案咨询

解决Laravel(Livewire)部署后Storage图片无法显示的问题

方法1:手动创建软链接(推荐方案)

多数共享主机环境会限制PHP执行创建软链接的权限,直接手动创建更可靠:

  • 登录主机文件管理器或SSH终端
  • 定位到public_html/public目录(你将整个项目放入public_html,原Laravel的public子目录现在位于此处)
  • 通过SSH执行软链接创建命令:
    ln -s ../storage/app/public storage
    
  • 若使用可视化文件管理器(如cPanel文件管理器),找到「创建链接」功能,目标路径选择/home/你的用户名/public_html/storage/app/public,链接名称设为storage,并将链接放在public_html/public目录下

方法2:绕过软链接,直接修改存储路径

如果主机完全禁止软链接,可通过调整存储配置解决:

  1. 修改config/filesystems.php中的public磁盘配置:
    'public' => [
        'driver' => 'local',
        'root' => public_path('uploads'),
        'url' => env('APP_URL').'/uploads',
        'visibility' => 'public',
    ],
    
  2. 在public_html/public目录下创建uploads文件夹,设置权限为755
  3. 调整Livewire上传逻辑,将文件存储到修改后的public磁盘,确保上传文件直接存入public/uploads目录
  4. 此时图片可通过APP_URL/uploads/文件名.jpg直接访问,无需软链接

方法3:修复路由执行Artisan命令的403错误

若坚持使用路由方式创建软链接,需排查权限与拦截问题:

  • 检查主机安全规则是否拦截该路由,可在.htaccess中添加允许规则,或临时关闭不必要的安全拦截
  • 确保路由未被认证中间件保护,调整路由代码:
    Route::get('/create-storage-link', function () {
        Artisan::call('storage:link');
        return 'Storage link created successfully';
    });
    
  • 若主机开启PHP安全模式或设置open_basedir限制,此方法大概率无法生效,建议优先选择前两种方案

额外检查项

  • 确认storage/app/public及软链接public/storage的权限:文件夹设为755,文件设为644
  • 检查.env文件中APP_URL配置正确,例如APP_URL=https://你的域名.com,确保图片生成URL无误
  • 验证public_html/index.php的路径配置正确,适配项目放入public_html的结构:
    require __DIR__.'/vendor/autoload.php';
    $app = require_once __DIR__.'/bootstrap/app.php';
    

内容的提问来源于stack exchange,提问作者anasbackend8 m

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 14:48:22