安装宝塔面板之后,PHP环境默认的上传文件大小限制往往只有2M左右,当业务需要接收较大文件时,这个默认值就会成为明显的瓶颈。要解除这一限制,核心是对PHP.ini配置文件中的upload_max_filesize和post_max_size两个参数进行调整,同时兼顾脚本执行时间、请求接收时间以及Nginx层级的请求体大小限制。本文将围绕这些参数的含义、在宝塔面板中的修改方法、配置生效后的验证方式以及常见排查方向展开说明,帮助有类似需求的站长正确完成配置。

理解PHP上传限制的核心参数
upload_max_filesize是PHP中控制单个文件上传上限的关键指令,默认值通常为2M。这个值决定了一次请求中允许上传的单个文件的体积上限,超过该值的文件会被PHP直接拒绝,并在上传结果中返回错误信息。很多用户只调整这一个参数,却发现大文件依然传不上去,原因往往出在下面这个参数上。
post_max_size控制的是一次POST请求所携带的全部数据的总体积。文件上传本质上是通过POST方式提交的,即使upload_max_filesize设置得很大,如果post_max_size仍然偏小,请求会在更早的阶段被中止。因此post_max_size的值必须大于或等于upload_max_filesize,否则真正生效的上传上限会是两者中较小的那一个。
除了以上两个核心参数,上传大文件时还需要关注max_execution_time和max_input_time。前者限制PHP脚本的最大执行时间,后者限制接收POST数据的最大时间。大文件在传输和脚本处理上都需要更长的时间,默认的30秒和60秒在百兆级别文件上传时可能不够用,建议根据实际带宽情况同步调大。下面用表格汇总这四个参数的作用与默认值:
| 参数名 | 常见默认值 | 作用 |
|---|---|---|
| upload_max_filesize | 2M | 单个文件上传的大小上限 |
| post_max_size | 8M | POST请求携带数据的总体积上限 |
| max_execution_time | 30 | PHP脚本最大可执行时间,单位为秒 |
| max_input_time | 60 | 接收POST数据的最大时间,单位为秒 |
在宝塔面板中修改PHP.ini的完整步骤
第一步:定位当前使用的PHP版本
登录宝塔面板后台,在左侧菜单中找到“软件商店”,进入后切换到“已安装”列表,找到网站正在使用的PHP版本。不同版本的PHP拥有各自独立的配置文件,修改之前必须确认版本对应关系,否则可能出现修改了配置却毫无效果的情况。点击对应PHP版本右侧的“设置”按钮,即可进入该PHP版本的详细管理页面。
第二步:在配置修改页调整参数
在PHP管理页面中切换到“配置修改”选项卡,页面上方会显示当前PHP实例的配置内容,本质就是php.ini文件的在线编辑界面。可以通过页面上的搜索功能快速定位到upload_max_filesize、post_max_size等参数的位置,并修改为期望的值。例如希望放开到100M,可以做如下设置:
; 搜索以下参数并修改对应的值 upload_max_filesize = 100M post_max_size = 100M max_execution_time = 300 max_input_time = 300
修改时注意保持PHP配置语法正确,等号两侧是否留有空格并不影响解析,但建议沿用原有书写习惯。完成修改后点击页面底部的“保存”按钮,保存过程中宝塔面板会进行一次语法检查,如果配置写错会给出提示。
第三步:重载配置使修改生效
保存配置之后,PHP并不会立即使用新的参数值。需要回到PHP管理页面,切换到“服务”选项卡,点击“重载配置”按钮。重载操作会重新读取一次配置文件,比重启整个PHP服务更轻量,也能避免在线业务出现短暂中断。对于使用PHP-FPM的常见环境而言,重载过程通常在一秒内完成,之后新的上传限制便会开始生效。
使用phpinfo验证上传限制是否生效
配置修改完成后,最直观的验证方式是借助phpinfo函数输出当前PHP环境的全部配置信息。在网站根目录下创建一个名为phpinfo.php的文件,写入下面的这段代码:
<?php phpinfo(); ?>
在浏览器中访问这个文件,页面会展示一个包含大量配置项的表格。通过浏览器自带的查找功能搜索upload_max_filesize和post_max_size,确认当前显示值已经变成修改后的目标数值。与此同时,也可以顺便核对页面顶部的“Loaded Configuration File”路径,确认修改的是否是当前PHP实例正在读取的配置文件。
验证完成后,务必删除phpinfo.php文件。phpinfo页面会暴露PHP版本、扩展列表、服务器软件名称等敏感信息,在公网环境下容易成为攻击者探测系统环境的入口。删除该文件后,整个验证流程才算完整收尾。
改动之后依然无效,常见原因排查
有时候在面板中修改了参数并成功重载配置,上传限制却没有实际变化,这时需要按顺序排查几个常见问题。首先要确认当前网站实际使用的PHP版本,宝塔面板支持在同一台服务器上安装多个PHP版本,多个站点可能分别绑定不同的版本。如果修改的是某个版本,而站点运行在另一个版本下,修改自然不会生效。可以在“站点设置”中查看“PHP版本”栏目,也可以借助phpinfo页面确认当前的配置路径。
其次要检查post_max_size与upload_max_filesize的大小关系。一个稳妥的经验是让post_max_size的值略大于upload_max_filesize,例如上传上限设为100M时,post_max_size可以设置为120M,为其他表单字段预留出一定的数据余量,避免因为表单附带字段较多而挤占上传空间。
还有一个容易被忽略的环节是Nginx层级的限制。Nginx作为反向代理,默认的client_max_body_size只有1M,当被代理的POST请求体超出这个值时,Nginx会直接返回413错误,此时请求根本不会到达PHP。因此在以Nginx作为Web服务器的宝塔环境中,还需要在站点配置中同步调整client_max_body_size,修改示例配置如下:
server {
listen 80;
server_name ipipp.com;
# 在server块中添加以下指令,具体大小根据上传需求调整
client_max_body_size 100M;
# 其余配置保持不变
}
修改Nginx配置后需要重载Nginx服务才能生效,在宝塔面板中直接点击Nginx软件右侧的“重载配置”按钮即可。如果完成上述调整后依然无法上传大文件,还可以进一步检查PHP的memory_limit参数,它虽然不直接限制上传大小,但PHP在处理上传数据时的内存分配如果被限制得过低,也可能间接导致上传失败。另外,使用了CDN加速的服务场景下,CDN节点同样会拥有自己的上传大小限制,需要一并确认。
总而言之,调整上传限制并不是一个孤立的操作,它串起了PHP配置、Web服务器配置与实际业务运行环境等多个层面。在宝塔面板中完成PHP.ini参数修改只是第一步,真正让大文件上传稳定生效的关键,在于理解upload_max_filesize与post_max_size之间的约束关系,并同步处理好Nginx的client_max_body_size限制,最后借助phpinfo完成验证。建议在修改完成后使用接近上限的大文件进行真实上传测试,确保从浏览器到Nginx再到PHP的完整链路都已经放行,这样配置结果才是真正可靠可用的。
宝塔面板PHP.iniupload_max_filesizepost_max_size文件上传限制修改时间:2026-07-09 08:06:18