PHP上传文件大小受限需同步修改php.ini中upload_max_filesize和post_max_size,且post_max_size≥upload_max_filesize;必须重启PHP服务,并检查.user.ini是否覆盖配置,最后通过phpinfo()和实际上传验证生效。

宝塔面板里 PHP 上传文件大小受限,本质是 php.ini 里两个关键参数没调对:一个是单次上传的文件上限 upload_max_filesize,另一个是整个 POST 请求体的最大容量 post_max_size。这两个值必须同时改,且 post_max_size ≥ upload_max_filesize,否则改了也没用。
确认当前限制值
先看实际生效的是哪个配置文件,避免改错地方:
- 在宝塔后台 → 网站 → 对应站点 → PHP 版本右侧的“设置” → “配置文件”,打开的就是当前站点使用的
php.ini - 或者直接运行
php -i | grep "Loaded Configuration File"查看 CLI 下加载的路径(注意:Web 环境通常用的是另一个,以宝塔面板里显示的为准) - 搜索
upload_max_filesize和post_max_size,记下当前值,比如默认可能是2M或8M
修改 upload_max_filesize 和 post_max_size
这两个参数必须一起调,且单位要一致(推荐用 M,别用 m 或 MB,PHP 只认 K/M/G):
-
upload_max_filesize = 64M(允许单个文件最大 64MB) -
post_max_size = 72M(必须 ≥ upload_max_filesize,留点余量给表单字段等其他 POST 数据) - 改完保存,**必须重启 PHP 服务**:宝塔后台 → 软件商店 → 找到对应 PHP 版本 → 点击“重启”
- 不重启,改了等于没改;只改一个,上传仍会失败
检查是否被 .user.ini 覆盖
宝塔默认会在网站根目录生成 .user.ini,它会覆盖部分 PHP 配置,优先级高于 php.ini:
立即学习“PHP免费学习笔记(深入)”;
- 进网站根目录(如
/www/wwwroot/your-site/),查看是否存在.user.ini - 如果存在,打开它,检查是否有
upload_max_filesize或post_max_size行,例如:upload_max_filesize=2M - 有就删掉或改成和
php.ini一致的值,否则它会把你在php.ini的修改顶掉 - 改完
.user.ini不需要重启 PHP,但宝塔默认每 5 分钟自动重载一次,也可手动在宝塔“网站”页点击对应站点右侧的“重载配置”
验证是否生效
别只信面板显示,用真实 PHP 脚本测:
- 新建一个
info.php放在网站根目录,内容为: -
浏览器访问
http://yoursite.com/info.php,搜索upload_max_filesize和post_max_size,确认显示值是你刚设的 - 再写个简单上传表单测试,上传一个略小于设定值的文件(比如设了 64M,就传 60MB 的 zip),观察是否成功
- 常见错误提示如
UPLOAD_ERR_INI_SIZE就说明还是被 ini 限制卡住了,回头再查.user.ini或重启状态
最容易漏的是 .user.ini 覆盖和 PHP 服务没重启,这两步跳过,改一百遍都没用。











