PHP上传大小限制由upload_max_filesize和post_max_size共同控制,需同时修改且post_max_size≥upload_max_filesize,单位必须明确(如64M),并同步检查Web服务器配置及重启服务。

PHP本地环境上传大小限制主要由两个配置项共同控制:upload_max_filesize 和 post_max_size,缺一不可。只改其中一个,上传仍会失败。
确认当前限制值
在本地 PHP 环境中(如 XAMPP、WAMP、MAMP 或自行编译的 PHP),先查清实际生效的配置位置和当前值:
-
phpinfo()页面里搜索upload_max_filesize和post_max_size,注意看 “Loaded Configuration File” 路径,那是你要改的php.ini - 命令行下运行
php --ini可快速定位配置文件路径 - 修改前务必备份原
php.ini文件
修改 php.ini 中的关键参数
打开 php.ini,找到并修改以下两处(单位统一用 M 表示 MB):
upload_max_filesize = 64M post_max_size = 128M
注意:post_max_size 必须 ≥ upload_max_filesize,否则表单提交阶段就会被截断;如果同时上传多个文件,总大小不能超过 post_max_size。
立即学习“PHP免费学习笔记(深入)”;
- 不建议设为
0或unlimited,PHP 不支持该写法,会导致解析失败 - 数值后必须带单位(
M或K),写成64是无效的 - 若使用 Apache,改完需重启
httpd;若用 PHP 内置服务器(php -S),需重启服务进程
检查是否被 .htaccess 或 Nginx 覆盖
即使 php.ini 改对了,Web 服务器层也可能拦截大上传:
- Apache 下,
.htaccess中若有php_value upload_max_filesize,它会覆盖php.ini值(前提是AllowOverride允许) - Nginx 用户需同步检查
client_max_body_size指令,例如:client_max_body_size 128M;
该值也要 ≥post_max_size - Docker 环境中,
php.ini可能挂载在容器外,或被php-fpm.conf中的php_admin_value强制覆盖
改完别急着测试,先用 php -v 和 php --ini 确认配置已加载,再跑一次 phpinfo() 核对数值是否更新——很多问题其实出在改了错的 php.ini 文件,或者忘了重启服务。











