PHP上传大小限制需同时修改php.ini中的upload_max_filesize和post_max_size,并调整Nginx的client_max_body_size,改完须重启PHP服务并重载Nginx配置。

PHP 上传大小限制在哪改
宝塔面板里改 PHP 配置,本质是改 php.ini 文件,不是改宝塔界面里的某个开关。很多用户点来点去找不到“上传限制”按钮,是因为它根本不在面板前端——得进配置文件手动调。
常见错误现象:upload_max_filesize 改了但还是传不过 2MB,或者上传时直接报 413 Request Entity Too Large(那是 Nginx 拦的,不是 PHP)。
-
upload_max_filesize控制单个文件上限,比如设为100M -
post_max_size必须 ≥upload_max_filesize,否则表单提交直接失败(常见坑:只改前者,忘了后者) -
max_execution_time和max_input_time建议同步调大,否则大文件上传中途超时中断 - 改完必须重启 PHP 服务(不是重载,是重启),否则不生效
宝塔里怎么找到并编辑 php.ini
别在「网站」→「PHP 版本」→「配置文件」里瞎点——那个页面显示的是当前网站所用 PHP 的全局配置路径,但编辑入口藏得深。
正确路径:软件商店 → 找到你用的 PHP 版本 → 点击「设置」→「配置修改」→ 拉到底部点「保存」前,先确认你看到的是 /www/server/php/{版本号}/etc/php.ini。
立即学习“PHP免费学习笔记(深入)”;
- 不同 PHP 版本配置文件路径不同,
{版本号}如80、74,别选错 - 如果用了多版本 PHP,每个版本都得单独改一遍
- 别用宝塔自带的「一键修改」功能(如“上传限制”滑块),它只改
upload_max_filesize,漏掉post_max_size,大概率失效
为什么改了 php.ini 还是 2MB?检查 Nginx 限制
PHP 层放开后,Nginx 默认只允许 1MB 请求体,会直接返回 413 Request Entity Too Large,连 PHP 都没机会执行。
对应配置在网站的 Nginx 配置文件里,路径通常是 /www/server/panel/vhost/nginx/{域名}.conf,或通用配置 /www/server/nginx/conf/nginx.conf。
- 找
client_max_body_size这行,设为和upload_max_filesize一致,比如client_max_body_size 100M; - 这行必须加在
server块内,不能放在http或location里(位置错就无效) - 改完要执行
nginx -t检查语法,再systemctl reload nginx或在宝塔里点「重载配置」
上传卡住、进度条不动、502 错误怎么排查
这些不是单纯改数字就能解决的,往往是多个环节叠加失败。
- 502 错误:大概率是 PHP-FPM 超时或崩溃,检查
request_terminate_timeout和request_slowlog_timeout(在www.conf里) - 进度条不动:前端 JS 可能没处理分块上传,或后端没返回进度响应;跟 PHP 配置无关,别白改
php.ini - 上传中途断开:看
error.log,重点搜timeout、client closed、recv() failed - 用
phpinfo()页面确认实际生效的upload_max_filesize值,别信自己“记得改过”
最常被忽略的一点:改完所有配置后,浏览器缓存可能让旧的上传表单(含隐藏字段 MAX_FILE_SIZE)还在起作用,清缓存或换无痕窗口测试。



















