Laravel Herd环境中文件上传失败问题求助
Laravel Herd环境下文件上传失效排查方案
检查存储目录权限
- 确认
storage/app/public/logos目录存在,不存在则执行:mkdir -p storage/app/public/logos - 设置目录权限:
chmod -R 755 storage/(本地开发可放宽为chmod -R 775 storage/,生产环境避免使用777) - 确保目录所有者与Web服务器运行用户一致(Herd默认使用当前系统用户,一般无需额外调整)
- 确认
验证文件系统配置
- 打开
config/filesystems.php,确认public磁盘配置正确:'public' => [ 'driver' => 'local', 'root' => storage_path('app/public'), 'url' => env('APP_URL').'/storage', 'visibility' => 'public', ], - 重新生成存储软链接:
php artisan storage:link,确保public/storage指向storage/app/public
- 打开
排查请求与验证问题
- 检查表单是否添加了
enctype="multipart/form-data"属性,没有的话文件无法被后端接收 - 验证规则中的
max:255限制的是255KB,若需更大容量,改为max:255MB(Laravel 9+支持单位),确认上传文件未超出限制
- 检查表单是否添加了
获取详细错误信息
- 在控制器中捕获异常打印具体原因:
try { $path = $request->file('logo')->store('logos', 'public'); } catch (\Exception $e) { dd($e->getMessage()); } - 查看
storage/logs/laravel.log日志文件,里面会记录上传失败的具体细节(如磁盘空间不足、文件类型不匹配等)
- 在控制器中捕获异常打印具体原因:
Herd环境专属检查
- 通过
phpinfo()查看PHP配置中的upload_max_filesize和post_max_size参数,确保数值足够大,不足则修改Herd对应的php.ini文件 - 确认系统临时目录(如
/tmp)具备读写权限,Herd依赖该目录处理上传文件
- 通过
内容的提问来源于stack exchange,提问作者Matiullah Karimi
相关产品推荐
相关产品推荐

