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

升级至Laravel 9后新上传图片无法显示求助

Laravel 7 升级到 9 后新上传图片404问题排查方案
  • 检查文件与目录权限
    新上传的文件可能因权限不足导致web服务器无法读取。执行以下命令调整权限(根据服务器运行用户替换www-data:www-data,比如apache:apache或nginx:nginx):

    # 递归设置目录所属用户组
    chown -R www-data:www-data storage/app/public/uploads
    # 设置目录权限为755,文件权限为644
    find storage/app/public/uploads -type d -exec chmod 755 {} \;
    find storage/app/public/uploads -type f -exec chmod 644 {} \;
    
  • 确认符号链接有效性
    自动执行php artisan storage:link可能因路径问题失效,手动创建绝对路径的符号链接更可靠:

    ln -s /绝对路径/项目目录/storage/app/public /绝对路径/项目目录/public/storage
    

    创建后可以通过ls -l public/storage查看链接是否指向正确路径。

  • 验证文件系统配置
    打开config/filesystems.php,确保public磁盘的配置正确:

    'public' => [
        'driver' => 'local',
        'root' => storage_path('app/public'),
        'url' => env('APP_URL').'/storage',
        'visibility' => 'public',
    ],
    

    同时确认上传代码中使用了public磁盘,例如:

    Storage::disk('public')->put('uploads/目标路径', $file);
    
  • 检查web服务器重写规则

    • Apache:确认public/.htaccess中的重写规则正确,确保请求能正确路由到public目录:
      RewriteEngine On
      RewriteRule ^(.*)$ public/$1 [L]
      
    • Nginx:确保站点配置中root指向项目的public目录,且包含正确的try_files规则:
      server {
          root /绝对路径/项目目录/public;
          location / {
              try_files $uri $uri/ /index.php?$query_string;
          }
      }
      

    配置修改后重启web服务器生效。

  • 清理服务器/CDN缓存
    如果使用了CDN或服务器缓存(如Opcache),刷新缓存以确保新上传的文件能被正确识别:

    • 重启php-fpm或web服务器清理Opcache
    • 在CDN控制台刷新对应域名的缓存

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 05:05:32