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

Laravel执行storage:link后上传的公共存储图片前端无法显示如何解决

Laravel公共存储图片无法显示排查方案

按照优先级逐一排查以下配置遗漏项:

1. 验证软链接有效性

虽然执行php artisan storage:link提示链接已存在,但大概率是旧软链接指向错误:

  • 执行命令检查软链接指向:ls -l /var/www/awendo/public/storage
  • 正常指向应为/var/www/awendo/storage/app/public,如果指向错误,先删除旧软链接:rm /var/www/awendo/public/storage
  • 重新在项目根目录(/var/www/awendo)下执行:php artisan storage:link

2. 检查目录与文件权限

web服务器运行用户(通常为www-data、nginx、apache)无文件读取权限是高频问题:

  • 给项目目录设置正确归属:chown -R www-data:www-data /var/www/awendo(将www-data替换为你实际的web运行用户)
  • 给存储目录设置可读权限:chmod -R 755 /var/www/awendo/storage

3. 核对存储配置

  • 查看config/filesystems.php中public磁盘配置是否和默认一致:
'public' => [
    'driver' => 'local',
    'root' => storage_path('app/public'),
    'url' => env('APP_URL').'/storage',
    'visibility' => 'public',
]
  • 核对.env文件中的APP_URL参数,必须和你实际访问站点的域名/IP完全一致,否则asset()函数会生成错误的访问路径

4. 补全上传文件公共可见性配置

你当前的上传代码未指定文件可见性,部分环境会默认生成私有权限的文件,导致web服务无法读取,修改上传代码:

// 第三个参数指定public磁盘的可见性
$this->image->storeAs("public/photos/category/", $slug, 'public');

5. 验证web服务规则

直接在浏览器地址栏输入图片的完整访问地址,根据状态码排查:

  • 返回404:路径拼写错误/软链接失效,检查$imageurl传递的值是否和存储的slug完全一致
  • 返回403:权限配置错误,回到第二步排查权限

内容的提问来源于stack exchange,提问作者Puneet Sharma

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.09 05:12:03