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

已配置php.ini仍触发PostTooLargeException,Laravel5.5如何调整上传下载限制?

嘿,这种情况我熟!明明改了php.ini里的post_max_size,结果Laravel还是抛PostTooLargeException,多半是漏了几个关键配置或者没找对文件。咱们一步步来搞定:

第一步:先确认你改对了php.ini文件

很多服务器会同时存在多个PHP配置文件——CLI命令行用的和Web环境用的根本不是同一个!别白忙活,先搞清楚Web环境真正在用哪个:

  • 新建一个phpinfo.php文件,内容写:
<?php phpinfo(); ?>
  • 用浏览器访问这个文件,找到Loaded Configuration File这一行,这才是你需要修改的php.ini路径,你之前改的是不是这个?
  • 改完配置后,一定要重启你的Web服务器(Apache/Nginx)和PHP-FPM(如果用的是这个运行模式),不然配置不会生效!
第二步:检查其他必需的PHP配置项

光改post_max_size不够,还有几个参数得配套调整,而且数值要合理:

  • upload_max_filesize:这个值必须小于等于post_max_size,比如你设了10240M,那这个也得设成10240M
  • memory_limit:上传大文件需要足够的内存,建议设得比post_max_size大一点,比如12288M
  • max_execution_time:大文件上传耗时久,别让PHP提前超时,设成300(5分钟)或者更长
    把这些都加到正确的php.ini里,格式像这样:
upload_max_filesize = 10240M
post_max_size = 10240M
memory_limit = 12288M
max_execution_time = 300
第三步:Laravel自身的限制检查

如果PHP配置都搞定了还是报错,得看看Laravel这边有没有额外限制:

  • 检查验证规则:如果你在表单请求或者控制器里用了max规则限制文件大小,比如'file' => 'max:10240',注意这里的单位是KB!10240KB等于10M,要对应10G的话得写成max:10485760(1010241024)
  • 异常处理(可选):如果确实需要捕获这个异常做友好提示,可以在app/Exceptions/Handler.php里添加处理逻辑,比如:
use Illuminate\Http\Exceptions\PostTooLargeException;

public function render($request, Exception $exception)
{
    if ($exception instanceof PostTooLargeException) {
        return response()->json(['message' => '上传文件超过最大限制'], 413);
    }

    return parent::render($request, $exception);
}

不过这只是治标,还是先把配置问题解决掉更稳妥。

第四步:Web服务器的请求大小限制

别忽略了Apache/Nginx本身也会限制请求体大小:

  • Nginx:在nginx.conf或者你的站点虚拟主机配置里添加client_max_body_size 10G;,然后重启Nginx
  • Apache:可以在httpd.conf或者项目根目录的.htaccess里添加LimitRequestBody 10737418240(10G对应的字节数),或者设为0表示不限制,之后重启Apache
最后再确认一遍

改完所有配置后,一定要重新加载/重启Web服务器和PHP-FPM,然后再用phpinfo.php确认所有配置项都生效了,再测试上传就没问题啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 03:28:04