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

Laravel 10生产环境图片无法显示问题求助

Laravel生产环境图片上传后无法显示问题排查与解决

核心问题:软链接创建方式错误

你通过路由创建软链接的方式存在权限和可靠性问题,Laravel官方推荐用命令行创建软链接,这是生产环境的标准做法:

  1. 登录生产服务器的SSH终端
  2. 进入项目根目录,执行命令:
php artisan storage:link

执行后检查项目public目录下是否生成storage软链接,指向storage/app/public目录。

你的路由创建方式可能失败的原因:

  • 服务器PHP配置禁用了symlink函数
  • Web服务器用户(如www-data)没有创建软链接的权限
  • $_SERVER['DOCUMENT_ROOT']路径可能和实际项目public目录不符

优化上传代码,避免硬编码路径

你的上传代码可以简化,同时避免硬写存储路径,提升兼容性:

if ($request->hasFile('foto')) {
    $file = $request->file('foto');
    $nama = 'foto-' . date('YmdHis') . '.' . $file->getClientOriginalExtension();
    // 用Laravel内置方法存储,更高效可靠
    $file->storeAs('img', $nama, 'public');
    // 用Storage::url()自动生成正确的访问URL,适配配置
    $user->foto = Storage::url("img/$nama");
}

检查目录权限

生产环境中,存储目录的权限配置错误会导致图片无法读取:

  1. 设置storage目录的所有者为Web服务器用户(以www-data为例):
chown -R www-data:www-data storage
  1. 设置目录和文件权限:
chmod -R 755 storage
chmod -R 644 storage/app/public/img

验证步骤

  1. 上传图片后,检查storage/app/public/img目录下是否存在对应的图片文件
  2. 直接访问图片的完整URL(如https://你的域名/storage/img/xxx.jpg),确认是否能正常显示
  3. 检查服务器是否正确指向Laravel的public目录作为网站根目录,确保rewrite规则正常

内容的提问来源于stack exchange,提问作者Edy Susilo

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 08:55:07