$ PHP _FILE массив недостающие записи от отправленной HTML-формы

В основном, когда у меня есть больше, чем приблизительно 25 загрузок файла в одной форме, $ PHP _FILES массив обрезается к первым 25 записям (0-24), который является неправильным. Это должно иметь все 31. Это только происходит на одном конкретном сервере. Apache с PHP. Я попробовал его на двух других серверах, и они, кажется, позволяют все 31.

Это могло быть вызвано некоторым параметром конфигурации в Apache? Или действительно ли это более вероятно проблема конфигурации PHP?

Единственной вещью, о которой я могу думать, является возможно апачская директива LimitRequestFields, но это должно бросить ошибку, а не просто обрезать ее к первым 25.Правильно?

Я знаю, что наличие такого количества полей File в одной форме является плохой практикой, однако это - необходимость из-за функциональности, требуемой для этой конкретной страницы. Я не могу работать вокруг этого.

Любая справка с этой проблемой значительно ценилась бы.

Ниже 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>
5
задан Chris 28 January 2010 в 05:53
поделиться

6 ответов

То, что "25 максимальных файлов " и "происходит только на конкретном сервере ", как представляется, указывает на некоторые конфигурационные меры/ меры безопасности на этом сервере.

И "25 max uploads" - это конфигурация по умолчанию расширения PHP suhosin -- смотрите директиву конфигурации suhosin.upload.max_uploads -- смотрите директиву suhosin.upload.max_uploads .


Это расширение установлено по умолчанию (из соображений безопасности) на некоторых дистрибутивах Linux -- Ubuntu предоставляет его по умолчанию, например, если я правильно помню ; вы можете проверить, установлено/включено ли оно в выводе phpinfo().

3
ответ дан 15 December 2019 в 01:01
поделиться

Проверьте раздел загрузки файлов в разделе директив INI .

Существует max_file_uploads , доступная с PHP 5.2.12, которую вы можете посмотреть на корректировку, если вы используете эту версию или выше.

. Кроме того, UPLOAD_MAX_FILESIZE - это максимум максимум для всех загруженных файлов, в сочетании всех загруженных файлов, поэтому возможно, что вы можете ударить там ограничение, хотя из описания, которые звучит больше что max_file_uploads ограничитель - это проблема.

1
ответ дан 15 December 2019 в 01:01
поделиться

Если смотреть на настройки конфигурации Suhosin не работает. Попробуйте проверить upload_max_filesize и Параметры post_max_size в php.ini.

0
ответ дан 15 December 2019 в 01:01
поделиться

Взгляд на директивы INVEnverquest * :

http://httpd.apache.org/docs/2.2/en/mod/core.html# Limitrequestbody

0
ответ дан 15 December 2019 в 01:01
поделиться

Почему не использовать move_uploaded_file, это работа просто попробуйте и добавьте путь в массиве и выполнить в этой функции, если не работать? Скопируйте move_uploaded_file (количество файлов) Это не хорошо, но его работа Просто попробуй

$file1 = $_POST['file1'];
$file2 = $_POST['file2'];
$file3 = $_POST['file3'];
$file4 = $_POST['file4'];
$file5 = $_POST['file5'];
$file6 = $_POST['file6'];
$array = array($file1,$file2,$file3,$file4,$file5,$file6);

 if(isset($_POST['submit']))
 {
  for($i=0;$i<count($array);$i++)
  {
   $dir = $array[$i];

   $uploaddir  = "dirfiles/";
   $uploadfile = $uploaddir.$_FILES['file1']['name'];
   move_uploaded_file($_FILES['file21']['tmp_name'],$uploadfile);

   $uploaddir  = "dirfiles/";
   $uploadfile = $uploaddir.$_FILES['file2']['name'];
   move_uploaded_file($_FILES['file2']['tmp_name'],$uploadfile);

           ?????????????????????????????????????????????????????
           ?????????????????????????????????????????????????????
0
ответ дан 15 December 2019 в 01:01
поделиться

PHP ставит Загруженные файлы во временный каталог. Таким образом, вы можете подтвердить, будет ли проблема с PHP или с Apache, проверяя, есть ли дополнительные 6 файлов в этом временном каталоге.

Что я бы сделал, это получить местоположение первого файла, а затем запустить цикл, чтобы повторять все файлы в этом каталоге. Если это 31, это PHP, если это 25, это Apache.

0
ответ дан 15 December 2019 в 01:01
поделиться
Другие вопросы по тегам:

Похожие вопросы: