Nginx服务器无法上传总大小超6MB的多图问题求助
解决Nginx+PHP多文件上传大小限制问题
我来帮你一步步揪出这个问题的根源——你已经调整了upload_max_filesize和client_max_body_size这两个核心配置,但还有几个容易被忽略的细节可能在偷偷限制你的上传大小:
1. 检查PHP的post_max_size配置
这个配置是控制整个POST请求的总大小上限,它必须大于或等于upload_max_filesize,而且要能覆盖你上传的多文件总大小(比如你要传总12M的文件,至少设成15M以上)。
- 找到你的PHP配置文件(常见路径:
/etc/php/8.0/fpm/php.ini,根据你的PHP版本和运行环境调整) - 修改配置:
post_max_size = 15M(或者更大的数值,比如20M) - 重启PHP-FPM服务生效:
sudo systemctl restart php-fpm(如果是Apache环境就重启Apache)
2. 确认Nginx配置的生效范围
你在nginx.conf里设置了client_max_body_size,但很多时候站点级的配置文件(比如/etc/nginx/sites-available/your-site.conf)会覆盖全局配置:
- 打开你的站点专属Nginx配置文件,检查是否存在
client_max_body_size的设置,如果有,改成和全局一致或更大的数值(比如30M) - 先验证Nginx配置合法性:
sudo nginx -t - 验证通过后重启Nginx:
sudo systemctl restart nginx
3. 排查PHP-FPM的局部配置覆盖
如果你的服务器用的是PHP-FPM,部分池配置文件可能会单独设置上传限制:
- 打开PHP-FPM的池配置(比如
/etc/php/8.0/fpm/pool.d/www.conf) - 检查是否有
php_admin_value[upload_max_filesize]或php_admin_value[post_max_size]这类行,如果有,确保数值足够大 - 重启PHP-FPM服务
4. 检查应用层的自定义限制
如果以上配置都没问题,那可能是你用的上传脚本或框架本身有硬编码限制:
- 比如WordPress要检查「媒体设置」里的最大文件大小
- 自定义PHP脚本的话,看看有没有用
$_FILES['file']['size']做判断的代码,有没有硬写的6MB阈值
5. 验证配置是否真正生效
最后可以创建一个phpinfo.php文件,内容如下:
<?php phpinfo(); ?>
访问这个文件,搜索upload_max_filesize、post_max_size,确认这些值已经变成你设置的数值;同时可以查看Nginx的响应头,确认client_max_body_size配置生效。
如果还是没解决,去看Nginx错误日志(/var/log/nginx/error.log)和PHP-FPM错误日志(/var/log/php-fpm.log),里面会有具体的错误提示(比如「request body is too large」),能帮你精准定位问题。
内容的提问来源于stack exchange,提问作者Rushikesh Shirkar
相关产品推荐
相关产品推荐

