max_file_uploads 限制单次请求上传文件总数,默认20,超限则静默截断$_files;需修改php.ini或.user.ini并重启服务(后者有缓存延迟),再通过count($_files'files')验证。

PHP 中 max_file_uploads 限制的是单次请求中允许上传的文件总数(不是大小),默认值通常为 20。若表单提交时含多个 <input type="file" multiple> 或多个独立 file 字段,超出该值会导致部分文件被静默丢弃,且 PHP 不报错,仅 $_FILES 数组长度被截断——这是常见上传失败却查不出原因的关键点。
确认当前 max_file_uploads 值
在 PHP 脚本中加入以下代码快速查看实际生效值:
<?php echo 'max_file_uploads = ' . ini_get('max_file_uploads') . '<br>';
print_r($_FILES);
?>
注意:该值由 php.ini 主配置决定,.htaccess 和 ini_set() 无法修改(运行时只读)。
修改 php.ini 配置(推荐方式)
找到你项目实际使用的 php.ini 文件(可通过 phpinfo() 页面的 “Loaded Configuration File” 行确认路径),用文本编辑器打开,搜索并修改:
- 定位到
max_file_uploads行,取消注释(删掉前面的分号),设为所需值,例如:
max_file_uploads = 100
- 保存后,必须重启 Web 服务器(如 Apache:`sudo systemctl restart apache2`;Nginx + PHP-FPM:`sudo systemctl restart php-fpm`)才能生效。
使用 .user.ini(共享主机/无 php.ini 权限时)
若无法修改主 php.ini(如虚拟主机),可在网站根目录或入口脚本所在目录新建 .user.ini 文件(注意开头是点),写入:
max_file_uploads = 100
该文件会被 PHP 自动读取(需启用 user_ini.filename = ".user.ini",多数环境默认开启)。无需重启服务,但有缓存延迟(默认 300 秒),可临时加 sleep(1); 测试或等待几分钟。
验证修复是否成功
创建一个测试表单,含 50 个空 file 输入框(或 1 个 multiple 并选 50 个文件),提交后检查 $_FILES 的 count():
确保输出数字 ≥ 你设置的 max_file_uploads 值,且无警告或截断现象。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











