413错误是Nginx在请求抵达PHP前拦截所致,需在server块内设client_max_body_size 200m,并同步调大PHP的upload_max_filesize=200M与post_max_size=200M,修改后必须重启PHP-FPM并重载Nginx。

ThinkPHP 8.0 项目中文件上传失败并返回 413 Request Entity Too Large 错误,说明请求在抵达框架前就被 Web 服务器或 PHP 解析层拦截了——此时 $_FILES 为空、日志里找不到 ThinkPHP 报错、前端只看到空白页或状态码 413,根本不是框架验证规则的问题。
确认错误源头是 Nginx 还是 PHP
打开浏览器开发者工具 → Network 标签页 → 找到上传请求 → 查看 Response Headers 中的 Server 字段。若显示 nginx,则 413 是 Nginx 拦截;若显示 Apache 或无此字段但 PHP 错误日志为空,大概率仍是 Nginx 拦截。只有当 Nginx 日志(/var/log/nginx/error.log)出现 “client intended to send too large body” 且 PHP 错误日志完全没记录该请求时,才能 100% 确认是 Nginx 第一道关卡卡死。
这一步跳过会浪费你两小时:别急着改 ThinkPHP 的 $upload->maxSize,先定位拦截位置。
修改 Nginx 的 client_max_body_size
方法一:直接编辑站点配置文件(推荐)
立即学习“PHP免费学习笔记(深入)”;
① 进入 Nginx 站点配置目录,如 /www/server/panel/vhost/nginx/your-site.conf(宝塔)或 /etc/nginx/sites-available/your-site(Ubuntu);
② 在 server { } 块开头附近插入一行:client_max_body_size 200m;;
③ 严禁写在 http { } 或 location ~ \.php$ { } 块内——写错位置等于没写;
④ 执行 nginx -t 验证语法,成功后运行 nginx -s reload;
方法二:宝塔面板快捷操作
进入「网站」→「设置」→「配置文件」→ 在 server 块内搜索 client_max_body_size,若未找到则手动添加该行(注意结尾分号),保存后点击右上角「重载配置」按钮。
⚠️ 提醒:改完不重载 = 白改。宝塔界面点「重载配置」比命令行更不容易出错。
同步调整 PHP upload_max_filesize 和 post_max_size
第一步:找到真实生效的 php.ini 文件路径
在项目根目录新建 info.php,写入 <?php phpinfo(); ?>,访问 http://yoursite.com/info.php,搜索 “Loaded Configuration File”,复制显示的绝对路径(如 /www/server/php/80/etc/php.ini)。
第二步:编辑该 php.ini
查找 upload_max_filesize 和 post_max_size,将二者设为匹配值:
upload_max_filesize = 200M
post_max_size = 200M
⚠️ post_max_size 必须 ≥ upload_max_filesize,且建议相等——若设成 upload_max_filesize = 200M 而 post_max_size = 128M,单文件上传也会失败。
第三步:重启 PHP-FPM
执行 systemctl restart php80-fpm(版本号按实际替换,如 php81-fpm);仅 reload 不生效。
第四步:验证是否生效
刷新 info.php 页面,搜索两项参数,确认数值已更新;若仍显示旧值,说明改错了文件或没重启服务。
ThinkPHP 8.0 层无需额外配置(但需注意)
ThinkPHP 8.0 的上传验证使用字节单位,例如 ['size' => 209715200](即 200MB),它只做应用层校验,不会触发 413。只要 Nginx 和 PHP 层放行,框架就能收到文件。
但注意:若你手动设置了 $upload->maxSize = 200 * 1024 * 1024,这个值必须 ≤ PHP 的 upload_max_filesize,否则用户会先看到 ThinkPHP 的“文件大小超出限制”提示,而非 413 错误。
这一步做完,上传请求就能穿过 Nginx 和 PHP 两道闸机,抵达 ThinkPHP 的 upload() 方法。



















