Laravel API大文件上传失败(超2Mb)求助:修改php.ini无效
解决Laravel API大文件上传「file failed to upload」错误
检查所有相关PHP配置项
只修改post_max_size不够,还得同步调整以下参数:upload_max_filesize:必须小于等于post_max_size,比如都设为10Mmax_execution_time:大文件上传耗时更长,建议设为300(单位:秒)max_input_time:同样调整到300以上,避免输入超时memory_limit:防止上传过程中内存不足,建议设为256M或更高
确认修改的是正确的php.ini文件
很多服务器会有多个php.ini(CLI和Web服务器各自用不同的),别改错了:- 可以在Laravel里加个临时路由输出phpinfo:
Route::get('/phpinfo', function() { phpinfo(); });
访问这个路由,找到
Loaded Configuration File项,这才是Apache实际使用的php.ini路径。- 可以在Laravel里加个临时路由输出phpinfo:
检查Laravel的验证规则
框架层面的验证也可能限制了文件大小:- 查看请求验证规则,比如确保
max参数足够大:$request->validate([ 'file' => 'required|file|max:10240', // 10MB,单位是KB ]); - 如果用了自定义FormRequest,检查对应的
rules()方法里的配置。
- 查看请求验证规则,比如确保
排查服务器/代理的额外限制
如果用了Nginx或者反向代理,它们也会有文件大小限制:- Nginx需要调整
client_max_body_size,在站点配置或者nginx.conf里添加:
改完重启Nginx。client_max_body_size 10M; - 若有CDN、负载均衡等代理服务,也要检查它们的文件上传大小限制。
- Nginx需要调整
验证配置是否生效
修改完所有配置后,务必重启Apache(或Nginx),然后通过phpinfo()确认所有参数已经更新,再测试大文件上传。
内容的提问来源于stack exchange,提问作者Ismail_Aj
相关产品推荐
相关产品推荐

