基本上,当我以一种形式上传超过 25 个文件时,PHP $_FILES 数组将被裁剪为前 25 个条目 (0-24),这是不正确的。它应该有所有 31。 这只发生在一台特定的服务器上。 Apache 与 PHP。我已经在另外两台服务器上试过了,它们似乎允许全部 31 个。
这可能是由 Apache 中的某些配置选项引起的吗?或者更可能是 PHP 中的配置问题?
我唯一能想到的可能是 LimitRequestFields apache 指令,但这应该会引发错误,而不是将其裁剪到前 25 个。对吧?
我知道在一个表单中包含如此多的文件字段是不好的做法,但由于此特定页面所需的功能,这是必需的。我无法解决这个问题。
如有任何帮助解决此问题,我们将不胜感激。
下面的 HTML 演示了我遇到的问题。
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
</head>
<body>
<form enctype="multipart/form-data" action="test.php" method="post">
<input type="file" name="field_id_11[0][1]"/>
<input type="file" name="field_id_11[1][1]"/>
<input type="file" name="field_id_11[2][1]"/>
<input type="file" name="field_id_11[3][1]"/>
<input type="file" name="field_id_11[4][1]"/>
<input type="file" name="field_id_11[5][1]"/>
<input type="file" name="field_id_11[6][1]"/>
<input type="file" name="field_id_11[7][1]"/>
<input type="file" name="field_id_11[8][1]"/>
<input type="file" name="field_id_11[9][1]"/>
<input type="file" name="field_id_11[10][1]"/>
<input type="file" name="field_id_11[11][1]"/>
<input type="file" name="field_id_11[12][1]"/>
<input type="file" name="field_id_11[13][1]"/>
<input type="file" name="field_id_11[14][1]"/>
<input type="file" name="field_id_11[15][1]"/>
<input type="file" name="field_id_11[16][1]"/>
<input type="file" name="field_id_11[17][1]"/>
<input type="file" name="field_id_11[18][1]"/>
<input type="file" name="field_id_11[19][1]"/>
<input type="file" name="field_id_11[20][1]"/>
<input type="file" name="field_id_11[21][1]"/>
<input type="file" name="field_id_11[22][1]"/>
<input type="file" name="field_id_11[23][1]"/>
<input type="file" name="field_id_11[24][1]"/>
<input type="file" name="field_id_11[25][1]"/>
<input type="file" name="field_id_11[26][1]"/>
<input type="file" name="field_id_11[27][1]"/>
<input type="file" name="field_id_11[28][1]"/>
<input type="file" name="field_id_11[29][1]"/>
<input type="file" name="field_id_11[30][1]"/>
<input type="text" name="blah" value="something"/>
<input type="submit" />
</form>
</body>
</html>
最佳答案
“25 个最大文件”和“仅在特定服务器上发生”似乎表明该服务器上有一些配置/安全措施。
“25 max uploads”是 suhosin PHP extension 的默认配置-- 查看 suhosin.upload.max_uploads
配置指令。
该扩展在某些 Linux 发行版上默认安装(出于安全原因)——例如,如果我没记错的话,Ubuntu 默认提供它;您可以在 phpinfo()
的输出中检查它是否已安装/启用。
关于PHP $_FILE 数组缺少提交的 HTML 表单中的条目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2152585/