PHP 8.4 中单次上传文件数量由 max_file_uploads 控制,默认20,需结合 upload_max_filesize 和 post_max_size 协同调整,并检查 Nginx/Apache 的 client_max_body_size 或 LimitRequestBody 限制。

PHP 8.4 本身不直接限制“单次上传的文件数量”,这个限制由 max_file_uploads 配置项控制,它属于 PHP 核心上传机制的一部分,与 PHP 版本无关,但在 PHP 8.4 环境中需主动检查并调整——因为默认值(通常为 20)很容易在多文件表单或前端分片上传协调阶段被突破,导致部分文件被静默丢弃。
确认并修改 max_file_uploads 值
该参数定义了每个请求中允许通过 $_FILES 接收的最大文件个数(不是总大小,也不是单个文件大小)。必须和 upload_max_filesize、post_max_size 协同设置才有效。
- 登录宝塔面板 → 【网站】→ 选择站点 → 【PHP管理】→ 找到 PHP 8.4 → 【设置】→ 【配置修改】
- 查找
max_file_uploads行(若不存在,可手动添加) - 将其设为合理值,例如:
max_file_uploads = 100(支持单次提交最多 100 个文件) - 保存后,系统会自动重载 PHP,无需手动重启服务
同步检查关联参数是否匹配
仅调大 max_file_uploads 不够,若 post_max_size 过小,整个 POST 请求会在进入 PHP 前就被 Web 服务器截断;若 upload_max_filesize 太小,则单个大文件会失败,影响整体上传成功率。
-
post_max_size必须 ≥ 所有上传文件总大小上限(建议设为2048M或更高) -
upload_max_filesize应 ≥ 单个文件最大允许尺寸(如512M) - 三者关系需满足:
post_max_size ≥ (upload_max_filesize × max_file_uploads)(理论下限,实际建议留 20% 余量)
验证是否生效
修改后务必验证,避免配置未加载或被覆盖:
立即学习“PHP免费学习笔记(深入)”;
- 在网站根目录新建
phpinfo.php,内容为<?php phpinfo(); ?> - 浏览器访问
https://your-domain.com/phpinfo.php - 搜索
max_file_uploads,确认显示值为你设置的数值(如 100) - 同时核对
upload_max_filesize和post_max_size是否同步更新
注意 Web 服务器层的隐性限制
Nginx 或 Apache 对请求体大小也有全局限制,若未放宽,PHP 层配置再高也无效:
-
Nginx:在站点配置的
server块中添加client_max_body_size 2048m; -
Apache:在站点配置的
<Directory>或<VirtualHost>中添加LimitRequestBody 2147483648(即 2GB) - 修改后记得点击【重载配置】或重启对应服务



















