宝塔面板中PHP网站上传大文件报413错误需同步调整PHP、Nginx或Apache的上传限制参数:一、修改php.ini中upload_max_filesize和post_max_size;二、Nginx配置client_max_body_size;三、Apache配置LimitRequestBody;四、用phpinfo()验证生效;五、排查SELinux、权限及防火墙干扰。

如果您在宝塔面板中运行PHP网站,上传大文件时提示“413 Request Entity Too Large”或文件被截断、无法完成上传,则很可能是PHP或Nginx/Apache的上传限制参数未同步调整。以下是修改宝塔面板中PHP上传大小限制的具体操作步骤:
一、修改PHP配置中的上传参数
PHP自身对上传文件大小有两处关键限制:upload_max_filesize控制单个文件最大允许体积,post_max_size控制整个POST请求体的最大容量,后者必须大于或等于前者。修改后需重启PHP服务生效。
1、登录宝塔面板,在左侧菜单点击网站,找到对应站点,点击右侧设置按钮。
2、在弹出窗口中切换到PHP版本选项卡,点击右侧设置(齿轮图标)。
立即学习“PHP免费学习笔记(深入)”;
3、在PHP配置页面中,找到并点击配置文件链接,进入php.ini编辑界面。
4、使用Ctrl+F搜索关键词upload_max_filesize,将其值修改为所需大小,例如:upload_max_filesize = 2048M。
5、继续搜索post_max_size,将其设为不小于upload_max_filesize的值,例如:post_max_size = 2048M。
6、保存文件,返回PHP设置页面,点击重载配置或重启对应PHP版本服务。
二、调整Web服务器(Nginx)的客户端请求体限制
Nginx默认限制客户端请求体大小为1MB,若PHP层已放开但Nginx仍拦截,则需同步修改client_max_body_size参数。该设置需在站点配置或全局Nginx主配置中生效。
1、在宝塔面板中进入网站列表,点击目标站点右侧设置。
2、切换至配置文件选项卡,定位到server { ... }区块内部。
3、在location ~ \.php$ {之前或server块首行附近插入一行:client_max_body_size 2048m;。
4、确保该行未被注释(即前面无#号),保存配置文件。
5、点击页面右上角重载Nginx按钮使配置生效。
三、调整Apache环境下的LimitRequestBody参数
若站点使用Apache作为Web服务器,其上传限制由LimitRequestBody指令控制,该值以字节为单位,需在虚拟主机配置中显式设置,且须大于PHP设定的post_max_size。
1、在宝塔面板中打开目标站点的设置,切换到配置文件选项卡。
2、在<Directory区块内或VirtualHost块末尾添加:LimitRequestBody 2147483648(即2GB,单位为字节)。
3、确认该行未被注释,保存配置文件。
4、点击重载Apache使更改立即生效。
四、验证上传限制是否生效
仅修改配置不等于实际生效,必须通过PHP脚本输出当前运行时参数,确认所有层级均已正确加载新值。此步骤可排除缓存、多PHP版本混淆或配置未加载等问题。
1、在网站根目录新建一个名为info.php的文件,内容为:<?php phpinfo(); ?>。
2、通过浏览器访问http://您的域名/info.php,查找upload_max_filesize和post_max_size两项的实际值。
3、同时搜索Loaded Configuration File,确认显示的php.ini路径与您编辑的路径一致。
4、若Nginx环境,可在终端执行nginx -t验证语法,再执行nginx -s reload强制重载。
五、检查SELinux或防火墙对大文件上传的干扰
部分Linux系统启用SELinux后,可能限制HTTPD或PHP-FPM进程写入临时上传目录的权限;某些云服务器安全组或本地防火墙也可能对长时间上传连接进行超时中断。
1、执行命令getenforce检查SELinux状态,若返回Enforcing,临时设为宽容模式:setenforce 0,观察上传是否恢复。
2、检查PHP临时上传目录权限,运行php -i | grep upload_tmp_dir获取路径,再执行ls -ld /路径确认www用户有读写权限。
3、若使用云服务器,登录对应云平台控制台,检查安全组规则中HTTP/HTTPS端口是否开启长连接或允许大于60秒的会话持续时间。











