413错误是Nginx因client_max_body_size默认1MB拦截所致,需同步调大Nginx的client_max_body_size和PHP的upload_max_filesize、post_max_size,并重载配置;还需检查fastcgi_read_timeout、PHP超时及宝塔自身上传限制。

宝塔面板上传大文件报 413 Request Entity Too Large
这是 Nginx 拦截的典型错误,不是 PHP 报的,也不是前端卡住——请求根本没进 PHP。Nginx 默认 client_max_body_size 是 1MB,超过就直接返回 413,连 PHP 的 upload_max_filesize 都不会读。
解决必须同步调大两个地方:Nginx 的客户端体限制 + PHP 的上传限制。只改一个,必然失败。
- 查当前错误:在宝塔「网站」→「对应站点」→「配置文件」里搜索
client_max_body_size,大概率没这行或值为1m - PHP 配置路径通常为
/www/server/php/{版本}/etc/php.ini,确认upload_max_filesize和post_max_size是否匹配(post_max_size必须 ≥upload_max_filesize) - 改完 Nginx 配置后,**必须点击宝塔右上角「重载配置」按钮**,不是重启 Nginx,也不是重启服务器
在宝塔中修改 Nginx 的 client_max_body_size
不要手动编辑全局 nginx.conf,容易被宝塔升级覆盖。正确做法是通过站点配置文件追加:
- 进入「网站」→「对应站点」→「配置文件」
- 在
server块内、location ~ \.php$上方任意位置插入:client_max_body_size 200m;
- 数值按需调整,比如传视频可设
500m;不建议写0(禁用限制),存在安全风险 - 如果站点启用了 SSL,在
server的 443 端口块里也得加同一行,否则 HTTPS 上传仍会 413
同步调整 PHP upload_max_filesize 和 post_max_size
PHP 层限制不匹配会导致上传中途失败,现象可能是进度条卡在 99%、或返回空白页。关键点:
立即学习“PHP免费学习笔记(深入)”;
- 编辑
/www/server/php/{版本}/etc/php.ini,找到并修改两处:upload_max_filesize = 200Mpost_max_size = 200M(注意单位是M,不是m或MB) -
post_max_size必须 ≥upload_max_filesize,否则表单提交整体被拒;但也不宜过大(如设 1G),可能引发内存耗尽 - 改完后在宝塔「软件管理」→「PHP」→「设置」→「重载配置」,或者执行命令:
systemctl reload php-fpm-{版本} - 验证是否生效:建个
info.php放网站根目录,内容为<?php phpinfo(); ?>,浏览器访问后搜索关键词确认数值
上传仍失败?检查隐藏限制项
413 不是唯一瓶颈,还有几个常被忽略的环节:
-
max_execution_time和max_input_time过小:大文件上传耗时长,PHP 可能超时中断。建议设为300(5 分钟)以上 - Nginx 的
fastcgi_read_timeout:默认 60 秒,上传慢时会被切断。在站点配置的location ~ \.php$块内加:fastcgi_read_timeout 300;
- 宝塔「网站」→「对应站点」→「PHP 版本」页面底部有「PHP 超时时间」设置,它会覆盖 php.ini 的
max_execution_time,务必一并调大 - 如果用的是宝塔「FTP」或「文件管理器」上传,它们走的是宝塔自己的 Python 后端,和 Nginx/PHP 无关——此时要改宝塔配置:
/www/server/panel/class/config.py中的MAX_FILE_SIZE(需重启面板)
真正卡点往往不在主配置,而在这些边缘 timeout 或覆盖逻辑。上传失败先看 Nginx 错误日志:/www/wwwlogs/你的域名.error.log,里面明确写着哪一行、哪个模块拒绝了请求。



















