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:绕过软链接,直接修改存储路径
如果主机完全禁止软链接,可通过调整存储配置解决:
- 修改
config/filesystems.php中的public磁盘配置:'public' => [ 'driver' => 'local', 'root' => public_path('uploads'), 'url' => env('APP_URL').'/uploads', 'visibility' => 'public', ], - 在
public_html/public目录下创建uploads文件夹,设置权限为755 - 调整Livewire上传逻辑,将文件存储到修改后的
public磁盘,确保上传文件直接存入public/uploads目录 - 此时图片可通过
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
相关产品推荐
相关产品推荐

