wordpress上传失败“文件超过最大允许大小”是宝塔中php与nginx双重限制未对齐所致:需同步设置php的upload_max_filesize(如256m)与post_max_size(≥280m),并在nginx的http{}块内添加client_max_body_size 256m,同时修正宝塔面板config.json中的upload_max_size并重启bt-panel。

WordPress上传失败,报错“文件超过最大允许大小”或直接空白,根本不是WordPress的问题——是宝塔的PHP和Nginx两层限制没对齐,缺一不可。
修改PHP的upload_max_filesize和post_max_size必须同步
这两个值在宝塔里改错顺序或数值关系,上传就会静默失败。常见错误是只改upload_max_filesize,却忽略post_max_size必须≥它。
-
post_max_size必须大于等于upload_max_filesize,建议固定配对:设upload_max_filesize = 256M,则post_max_size = 280M(留出POST头开销) - 在宝塔「软件商店」→ 找到当前站点所用的PHP版本 → 「设置」→ 「配置修改」里直接编辑,比手动改
/www/server/php/*/etc/php.ini更可靠 - 顺带调高
max_execution_time和max_input_time到300,否则大文件上传中途超时,页面卡住或返回500 - 改完点「保存」后,务必点「重载配置」——只点「重启PHP」可能不加载新ini,面板里这个按钮实际执行的是
bt reload或service php-fpm-xx reload
加client_max_body_size到Nginx配置,位置错了就白改
Nginx在请求进入PHP前就拦掉了,所以即使PHP全放开,上传仍报413错误。关键不是加不加,而是加在哪。
将 LaTeX(.tex)学术论文转换为 Word(.docx),支持可编辑的 OMML 公式、原生 Word 表格、嵌入图形、IEEE 双栏排版及参考文献
- 不要只改某个网站的配置文件;优先改全局Nginx主配置:
/www/server/nginx/conf/nginx.conf,在http{}块内(不是server{}或location{})添加:client_max_body_size 256m;(注意单位是小写m) - 如果用了宝塔7.9+,也可在「网站」→ 对应站点 → 「配置修改」里,在
server {开头后第一行插入该指令,但要确保缩进对齐,且不在任何location块内部 - 改完必须点「重载Nginx」,不是「重启」——重载才让配置实时生效;命令行可执行
bt 12或nginx -t && systemctl reload nginx - 若你的宝塔面板本身通过域名访问(比如绑定了
panel.example.com),还要去该站点的Nginx配置里同样加一遍client_max_body_size,否则面板「文件管理器」上传也会被拦
宝塔面板自身上传限制(文件管理器)需单独改config.json
很多人只调了PHP和Nginx,结果发现面板里的「文件」→「上传」按钮仍然卡在100MB——这是宝塔v7.9.0+版本新增的硬编码限制,和网站无关,得动它的主配置。
- SSH登录后执行:
vim /www/server/panel/data/config.json - 查找
"upload_max_size"字段:若存在,改为所需值(单位MB,如2048);若不存在,在JSON根对象内新增一行:"upload_max_size": 2048,(注意逗号,非最后一项才加) - 保存退出后,必须执行
bt restart(或systemctl restart bt-panel),仅重载Nginx或PHP无效 - 改完立刻测试:上传一个1.8GB的zip到面板「文件管理器」,别等网站功能,先确认面板底层是否通
验证时别只看phpinfo(),要抓真实请求响应
phpinfo页面显示值正确,不代表上传真能过——中间任意一层拦截都会让你白忙活。
- 上传一个略大于设定值的文件(比如设了256MB,就传260MB的zip),观察浏览器Network面板中上传请求的响应状态码:
- 返回
413 Request Entity Too Large→ Nginx层没生效,回头检查client_max_body_size位置和重载动作 - 返回
500或无响应 → PHP超时或内存不足,查max_execution_time、memory_limit(建议≥upload_max_filesize) - 前端弹窗提示
upload size exceed limit或控制台报Failed to load resource→ 面板config.json未生效或JSON格式错误(多一个逗号、少一个引号都会导致解析失败) - 日志快速定位:
tail -n 30 /www/server/panel/logs/request.log | grep "413\|upload"和tail -n 30 /www/server/php/*/logs/php-fpm.log | grep "timeout\|upload"
最常被绕过的其实是Nginx的client_max_body_size位置——加在location / { }里面,等于没加;还有人改了PHP但忘了post_max_size ≥ upload_max_filesize,PHP会悄悄截断而不报错。这两处一旦漏掉,其他所有操作都只是在给错误铺路。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!










