WordPress 大坑:PHP 参数明明 20M,后台上传上限依旧只显示 1MB 排查实录

3次阅读
没有评论

现象描述

进入 WordPress【工具 → 站点健康 → 信息 → 媒体处理】查看参数:

  • upload_max_filesize = 20M
  • post_max_size = 20M

PHP 配置已经调整完成,刷新后台,媒体上传页面依然提示:最大上传文件大小:1 MB

上传大于 1MB 文件直接报错,很多人反复修改 php.ini、.user.ini无效,陷入死循环。

原理复盘

很多开发者误以为上传限制只由 PHP 管控,完整请求链路顺序:

客户端 → Nginx/Apache → PHP → WordPress

限制优先级从上到下,上游拦截后,请求根本抵达不了 PHP。

Nginx 默认 client_max_body_size 1M,请求在进入 PHP 之前直接截断。

WordPress 读取 PHP 配置显示 20M,但实际上传被 Web 服务器拦截,出现参数与前台提示不一致的诡异现象。

一、先修复 PHP 配置隐患(基础规范)

当前配置缺陷:post_max_size建议大于 upload_max_filesize

文件 + 表单附加数据会占用 POST 体积,两者相等极易触发隐性超限。

推荐最终配置(.user.ini /php.ini 通用)

ini

upload_max_filesize = 20M
post_max_size = 24M
memory_limit = 256M
max_execution_time = 300
max_input_time = 300

修改完成重载 PHP-FPM。

二、最高概率解决方案:调整 Nginx 请求体限制(宝塔 / Nginx 服务器必做)

宝塔面板操作

网站 → 设置 → 配置文件,在 server { } 内部添加一行:

nginx

client_max_body_size 30M;

保存配置,重载 Nginx

注意:不要写在 location 段,优先放置在 server 层级;单位区分大小写,30m小写同样生效。

独立服务器直接修改 nginx.conf

全局配置 /etc/nginx/nginx.conf

nginx

http {
    client_max_body_size 30M;
}

执行重载命令

bash

nginx -t
systemctl reload nginx

三、第二大诱因:WordPress 多站点(Multisite)强制限制

多站点上传限制优先级高于 PHP 参数,极易被忽略。

操作路径:

【我的站点 → 网络管理 → 设置 → 网络设置】

找到 最大上传文件大小

⚠️ 单位是 KB!

如果这里填写 1024(1MB),直接覆盖所有服务端配置。

需要支持 20MB,修改为 20480,保存。

四、插件 / 主题拦截排查

安全插件、迁移插件、媒体优化插件、WAF 类插件可以通过代码强制覆盖上传上限。

快速验证方案:

  1. 后台全部插件临时禁用
  2. 切换回 WP 默认主题
  3. Ctrl+F5 强制刷新页面,查看上传上限是否恢复正常 若恢复,逐个启用插件定位限制来源。

五、CDN、云 WAF、防火墙层面限制

如果网站接入 Cloudflare、阿里云 WAF、腾讯云 CDN:

部分服务商免费套餐默认请求体上限 100MB 以内,但少数自定义规则会限制为 1MB。

排查方式:

临时域名直连服务器(绕过 CDN)测试上传,能正常上传即可确认是 CDN 侧限制,前往对应后台调整请求大小限制。

六、修改完成后的标准验证步骤

  1. 重载 PHP-FPM、Nginx
  2. 浏览器强制刷新(Ctrl+F5,清除页面缓存)
  3. 进入媒体添加页面查看上限提示
  4. 准备 1.5MB 测试文件,尝试上传验证

七、应急替代方案(来不及调整配置)

大型压缩包、备份文件不要走 WP 后台上传:

使用 SFTP/FTP 上传至对应目录解压:

  • 主题包:wp-content/themes/
  • 插件包:wp-content/plugins/ 媒体文件:直接上传 wp-content/uploads,可配合插件同步入库。

常见踩坑总结

  1. 只改 PHP,不改 Nginx client_max_body_size,90% 场景依旧失败
  2. post_max_size ≤ upload_max_filesize,埋下隐性上传失败隐患
  3. 多站点管理员忘记网络设置内独立上传限制
  4. 修改配置后没有重载服务,浏览器缓存导致判断失误
  5. .user.ini文件名写错,缺少开头小数点
正文完
可以使用微信扫码关注公众号(ID:xzluomor)
post-qrcode
 0
评论(没有评论)
验证码