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

Laravel部署至虚拟主机后无法保存图片问题求助

Laravel Backpack 5 虚拟主机图片上传失败排查方案

1. 检查目录权限

  • 确认Laravel的storage/app/public(或自定义上传目录)及public_html下对应软链接目录的权限:
    • 目录设为755,文件设为644
    • 确保目录所有者是虚拟主机运行用户(比如cPanel用户名或www-data),SSH执行:
      chown -R 你的cPanel用户名:你的cPanel用户名 laravel-app/storage/app/public
      chmod -R 755 laravel-app/storage/app/public
      
    • 若虚拟主机不支持软链接,直接将上传目录指向public_html内的文件夹(如public_html/uploads),再修改Laravel文件系统配置。

2. 修正文件系统配置

  • 打开laravel-app/config/filesystems.php,检查disks中的public配置:
    'public' => [
        'driver' => 'local',
        'root' => storage_path('app/public'),
        'url' => env('APP_URL').'/storage',
        'visibility' => 'public',
    ],
    
    若直接上传到public_html内目录,新增一个disk配置:
    'uploads' => [
        'driver' => 'local',
        'root' => public_path('uploads'), // public_path()自动指向public_html
        'url' => env('APP_URL').'/uploads',
        'visibility' => 'public',
    ],
    
    之后在Backpack字段配置里指定使用这个disk。

3. 核对Backpack上传字段配置

  • 打开CRUD控制器,找到图片上传字段定义,比如:
    CRUD::field('image')->type('upload')->disk('public');
    
    确认disk参数与filesystems.php里的配置一致,同时检查自定义路径(如->path('products'))对应的目录是否存在且权限正确。

4. 排查PHP上传限制

  • 检查虚拟主机PHP配置:
    • upload_max_filesize:设置足够大的值(比如10M)
    • post_max_size:必须大于等于upload_max_filesize
    • max_execution_time:大文件上传需延长执行时间
      可通过phpinfo页面查看当前配置,或在cPanel的PHP设置中修改。

5. 查看Laravel日志定位问题

  • 打开laravel-app/storage/logs/laravel.log,搜索上传相关错误(如权限拒绝、路径不存在),日志会给出具体失败原因,是最高效的排查方式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 03:43:14