Laravel Blade表单设置enctype="multipart/form-data"上传文件提示连接重置如何解决?
Laravel文件上传触发"The connection was reset"错误排查方案
1. 检查Nginx客户端上传大小限制
这是该场景下最常见的触发原因,Nginx默认限制单请求最大大小为1M,超出后会直接断开连接。
修改步骤:
- 打开Nginx主配置文件:
/etc/nginx/nginx.conf,或对应站点的配置文件(一般在/etc/nginx/sites-available/目录下) - 在
http块或对应站点的server块中添加配置:client_max_body_size 20M;,数值可根据实际需要的最大上传大小调整 - 执行
nginx -t验证配置语法无误后,执行systemctl reload nginx重载配置生效
2. 调整PHP上传相关配置
Nginx放行了请求后,还需要PHP配置允许对应大小的文件上传:
- 打开PHP7.4-fpm的配置文件:
/etc/php/7.4/fpm/php.ini - 修改以下参数为适配的数值:
upload_max_filesize = 20M:单个上传文件的最大大小post_max_size = 25M:整个POST请求的最大大小,需要大于upload_max_filesize以容纳表单其他字段的内容max_execution_time = 60:PHP脚本最大执行时长,大文件上传需要更长的执行时间max_input_time = 60:PHP解析请求数据的最大时长memory_limit = 128M:PHP脚本允许占用的最大内存,避免大文件上传时内存不足
- 修改完成后执行
systemctl restart php7.4-fpm重启PHP服务生效
3. 验证Laravel存储目录权限
Laravel上传的文件默认会写入storage目录,需要确认该目录的权限对PHP运行用户开放:
- Ubuntu环境下PHP7.4-fpm默认运行用户为
www-data,执行命令修改目录权限:chown -R www-data:www-data /你的Laravel项目根目录路径/storage chmod -R 755 /你的Laravel项目根目录路径/storage - 权限修改后可执行
php artisan config:clear清理Laravel配置缓存避免异常
4. 调整超时配置(大文件上传场景适用)
如果上传的文件超过10M,还需要调整Nginx和PHP的超时配置避免连接提前中断:
- 在对应站点的Nginx
server块中添加以下配置:fastcgi_connect_timeout 60s; fastcgi_send_timeout 60s; fastcgi_read_timeout 60s; - 重载Nginx配置生效
5. 代码层面排查
- 确认Blade表单已经正确添加
enctype="multipart/form-data"属性 - 临时注释控制器中的上传处理逻辑,直接返回空响应,测试是否还会出现连接重置:如果不再出现,说明上传逻辑存在异常,可查看
storage/logs/laravel.log中的报错信息定位问题 - 测试小体积文件(比如<1M的图片)是否能正常上传,如果小文件正常大文件异常,基本可以确定是前面的大小限制或超时配置问题
6. 其他排查方向
- 执行
df -h检查服务器磁盘剩余空间是否充足 - 检查服务器防火墙、WAF等安全策略是否拦截了大文件上传请求
内容的提问来源于stack exchange,提问作者pavlek86
相关产品推荐
相关产品推荐

