宝塔面板上传文件被截断在50MB的根本原因是Nginx的client_max_body_size、PHP的upload_max_filesize和post_max_size三者中最小值限制所致;需同步修改Nginx全局或站点配置中的client_max_body_size、PHP配置中的upload_max_filesize与post_max_size(后者不小于前者),并重载服务验证,同时排查防跨站、WAF插件等前端拦截因素。

宝塔面板上传文件被截断在50MB,根本原因是Nginx/Apache+PHP联合限制
宝塔面板本身不直接硬编码50MB上传上限,这个数字是后端Web服务器(Nginx或Apache)和PHP共同作用的结果。你看到的“上传失败”或“文件过大”提示,通常来自Nginx的client_max_body_size、PHP的upload_max_filesize和post_max_size三者中最小的那个值。
修改Nginx配置中的client_max_body_size
这是最常被忽略的一环——即使PHP允许传500MB,Nginx在请求体到达PHP前就已拒绝。宝塔的Nginx配置文件位于/www/server/panel/vhost/nginx/下对应站点配置,但更稳妥的做法是统一改全局主配置:
- 编辑
/www/server/nginx/conf/nginx.conf,在http{...}块内(不是server块)添加一行:client_max_body_size 500m; - 如果使用的是宝塔7.9+,也可在面板【网站】→【设置】→【配置修改】里,找到
server {开头处,在其内部第一行插入该指令(注意缩进对齐) - 改完必须执行
bt reload或在面板点击【重载Nginx】,否则不生效
同步调整PHP的upload_max_filesize和post_max_size
这两个值必须同时调大,且post_max_size ≥ upload_max_filesize,否则PHP会静默截断。宝塔中修改方式如下:
- 进入【软件商店】→ 找到当前使用的PHP版本 → 【设置】→ 【配置修改】
- 搜索
upload_max_filesize,改为例如500M(注意单位是大写M) - 搜索
post_max_size,改为500M或更大(如512M) - 保存后点击【重载配置】,不要只点重启PHP——重载才真正加载新ini
- 验证是否生效:新建一个
phpinfo.php,内容为<?php phpinfo(); ?>,访问它,搜索确认两项值已更新
宝塔面板自身界面上传仍失败?检查是否启用了“防跨站攻击”或安全插件
即便后端全放开,宝塔前端上传组件(基于WebUploader)有时会因安全策略二次拦截。常见干扰源:
- 【网站】→【设置】→【PHP版本】页下方勾选了“防跨站攻击(open_basedir)”,它可能限制临时上传目录权限,可临时关闭测试
- 安装了“WAF防火墙”或“网站监控报表”等第三方插件,部分版本会注入JS拦截大文件上传,尝试禁用后重试
- 浏览器控制台(F12 → Network)查看上传请求的响应:若返回413 Request Entity Too Large,说明Nginx没生效;若返回500或静默失败,大概率是PHP或插件问题
真正麻烦的往往不是改哪几个参数,而是改完没重载、改了Nginx却忘了PHP、或者自以为改了PHP实际改的是另一个PHP版本的配置文件——多核对php -i | grep "Loaded Configuration File"输出的真实路径。


















