PHP $_FILE 数组缺少提交的 HTML 表单中的条目

标签 php apache forms file-upload

基本上,当我以一种形式上传超过 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/

相关文章:

php - 在具有分层值的数组或 MySQL 条目中搜索

php - cURL 在调用 curl_exec 时挂起服务器。

PHP Laravel Eloquent,foreach 破坏了我的关系

php - 在 Magento 中获取基础产品图片

php - Web 应用程序需要最低浏览器版本

linux - 公共(public) Samba 共享配置 - 不可写?

apache - 如果 REQUEST_URI 以某些内容开头则重定向

php - 自动完成搜索框,从结果中选择多个值

javascript - 与表单的提交按钮配合使用的 Google AdWords 转化跟踪

css - IE9 再次与众不同