只改upload_max_filesize无效,必须协同调整post_max_size(≥upload_max_filesize)、memory_limit(≥post_max_size的1.5倍)及Web服务器限制(如Nginx的client_max_body_size),并确认修改的是“Loaded Configuration File”路径下的php.ini且已重启服务。

只改 upload_max_filesize 基本没用。它必须和 post_max_size、memory_limit 协同调整,还要确认 Web 服务器(如 Nginx 或 Apache)没在更早阶段就把请求拦掉。
三个PHP参数必须一起改
它们不是孤立的,缺一不可:
-
upload_max_filesize:单个文件上限,比如设为
128M -
post_max_size:整个 POST 请求体总大小,必须 ≥ upload_max_filesize,建议多留 5–16M 给表单字段和协议头,例如
144M -
memory_limit:PHP 解析上传数据时会暂存内容到内存,建议设为
256M或更高(至少是 post_max_size 的 1.5 倍)
单位和写法有硬性要求
值必须带单位字母,且只认大写的 K、M、G:
- ✅ 正确:
upload_max_filesize = 2048M、post_max_size = 2G - ❌ 错误:
"128M"(引号导致解析失败)、128MB(B 被忽略,变成 128 字节)、134217728(字节数虽合法但易出错)
改完别急着测试,先确认是否生效
很多人改了却没效果,是因为改错了文件或没重启服务:
立即学习“PHP免费学习笔记(深入)”;
- 新建一个
info.php,内容为<?php phpinfo(); ?>,浏览器访问它,搜索 “Loaded Configuration File” 看路径,再搜 “upload_max_filesize” 确认数值 - Apache 用户执行:
sudo systemctl restart apache2 - PHP-FPM + Nginx 用户需同时运行:
sudo systemctl restart php8.1-fpm和sudo systemctl reload nginx - phpEnv 用户要完全退出托盘图标再重开,点“重启 Apache”通常不重载 php.ini
别忘了Web服务器自己的限制
即使 PHP 层全放开,Nginx 或 Apache 仍可能提前拒绝请求:
-
Nginx:在
server或location ~ \.php$块中加client_max_body_size 144M;,值 ≥ post_max_size -
Apache:检查
httpd.conf是否有LimitRequestBody,默认可能是 1MB;可注释掉或设为LimitRequestBody 150000000(约 143MB) - 宝塔用户可在网站配置文件里直接加
client_max_body_size,或通过面板【配置修改】页批量调整



















