PHP видит только 20 загружаемых файлов одновременно - PullRequest
14 голосов
/ 21 мая 2011

Когда я пытаюсь загрузить более 20 файлов одновременно, веб-сервер видит только первые 20. Любые другие файлы просто игнорируются. В чем проблема?

Простой код для попытки:

<form action="index.php" method="post" enctype="multipart/form-data">
<?php
if($_FILES){
    print_r($_FILES);
}
else{
    for($i = 0; $i < 30; $i++)
    {
        echo '<input type="file" name="file'.$i.'"><br/>';
    }
}
?>
<input type="submit" value="go">
</form>

print_r() вывод:

Array ( [file0] => Array ( [name] => 39442.jpg [type] => image/jpeg [tmp_name] => W:\tmp\phpD42.tmp [error] => 0 [size] => 274217 ) [file1] => Array ( [name] => 39442.jpg [type] => image/jpeg [tmp_name] => W:\tmp\phpD52.tmp [error] => 0 [size] => 274217 ) [file2] => Array ( [name] => 39442.jpg [type] => image/jpeg [tmp_name] => W:\tmp\phpD73.tmp [error] => 0 [size] => 274217 ) [file3] => Array ( [name] => 39442.jpg [type] => image/jpeg [tmp_name] => W:\tmp\phpD83.tmp [error] => 0 [size] => 274217 ) [file4] => Array ( [name] => 39442.jpg [type] => image/jpeg [tmp_name] => W:\tmp\phpD94.tmp [error] => 0 [size] => 274217 ) [file5] => Array ( [name] => 39442.jpg [type] => image/jpeg [tmp_name] => W:\tmp\phpDB4.tmp [error] => 0 [size] => 274217 ) [file6] => Array ( [name] => 39442.jpg [type] => image/jpeg [tmp_name] => W:\tmp\phpDC5.tmp [error] => 0 [size] => 274217 ) [file7] => Array ( [name] => 39442.jpg [type] => image/jpeg [tmp_name] => W:\tmp\phpDE5.tmp [error] => 0 [size] => 274217 ) [file8] => Array ( [name] => 39442.jpg [type] => image/jpeg [tmp_name] => W:\tmp\phpDF5.tmp [error] => 0 [size] => 274217 ) [file9] => Array ( [name] => 39442.jpg [type] => image/jpeg [tmp_name] => W:\tmp\phpE06.tmp [error] => 0 [size] => 274217 ) [file10] => Array ( [name] => 39442.jpg [type] => image/jpeg [tmp_name] => W:\tmp\phpE26.tmp [error] => 0 [size] => 274217 ) [file11] => Array ( [name] => 39442.jpg [type] => image/jpeg [tmp_name] => W:\tmp\phpE37.tmp [error] => 0 [size] => 274217 ) [file12] => Array ( [name] => 39442.jpg [type] => image/jpeg [tmp_name] => W:\tmp\phpE57.tmp [error] => 0 [size] => 274217 ) [file13] => Array ( [name] => 39442.jpg [type] => image/jpeg [tmp_name] => W:\tmp\phpE68.tmp [error] => 0 [size] => 274217 ) [file14] => Array ( [name] => 39442.jpg [type] => image/jpeg [tmp_name] => W:\tmp\phpE78.tmp [error] => 0 [size] => 274217 ) [file15] => Array ( [name] => 39442.jpg [type] => image/jpeg [tmp_name] => W:\tmp\phpE98.tmp [error] => 0 [size] => 274217 ) [file16] => Array ( [name] => 39442.jpg [type] => image/jpeg [tmp_name] => W:\tmp\phpEB9.tmp [error] => 0 [size] => 274217 ) [file17] => Array ( [name] => 39442.jpg [type] => image/jpeg [tmp_name] => W:\tmp\phpEC9.tmp [error] => 0 [size] => 274217 ) [file18] => Array ( [name] => 39442.jpg [type] => image/jpeg [tmp_name] => W:\tmp\phpEE9.tmp [error] => 0 [size] => 274217 ) [file19] => Array ( [name] => 39442.jpg [type] => image/jpeg [tmp_name] => W:\tmp\phpEFA.tmp [error] => 0 [size] => 274217 ) )

.htaccess: php_value max_file_uploads 100 - не помогает

ini_set('max_file_uploads', 100) - doesn't help

Я только что добавил строку в php.ini на моем локальном сервере:

max_file_uploads = 100

И это помогло. Но я не думаю, что хостер меняет его на веб-сервере клиента. Было бы очень круто повлиять на это значение без редактирования php.ini.

Ответы [ 7 ]

15 голосов
/ 21 мая 2011

Установите значение max-file-uploads выше (да, это «новое» значение).

Это PHP_INI_SYSTEM , поэтому его можно установитьв конфигурации php.ini или веб-сервера / apache.Боюсь, нет доступа .htaccess или «в сценарии».

8 голосов
/ 03 апреля 2014

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

Когда я пытался загрузить более 50 изображений, сервер ограничивал его до 20. (Я работал на Centos Server с PHP 5.3.6)

Установка max_file_uploads = 100 в файле PHP.ini не помогла даже, но предел загрузки числового файла изменился на 25

При поиске числового значения 25 на странице phpinfo () я наткнулся на параметр suhosin.upload.max_uploads со значением 25.

Установка suhosin.upload.max_uploads на 100 вместе с max_file_uploads = 100 в файле PHP.ini сработала, теперь на сервер мы можем загрузить до 100 файлов. (Я не уверен, есть ли у нас какой-либо другой файл, в котором мы изменяем значения параметров suhosin, но установка значений suhosin в php.ini ИЛИ php.d / suhosin.ini будет работать :))

max_file_uploads = 100    
suhosin.upload.max_uploads=100

http://www.hardened -php.net / suhosin / configuration.html

2 голосов
/ 21 мая 2011

Есть ограничения относительно того, сколько PHP может публиковать. См. Директивы upload_max_filesize , max_file_uploads и post_max_size .

1 голос
/ 18 декабря 2015

Если вы запускаете PHP как модуль Apache, вы можете изменить его на уровне виртуального хоста (он же httpd.conf). Вы должны помнить, что, будучи директивой PHP_INI_SYSTEM, вы должны использовать php_ admin _value (обычные php_value будут игнорироваться). Пример кода может быть:

<Location "/api">
    php_admin_value max_file_uploads 250
</Location>
1 голос
/ 23 апреля 2013

Вы можете создать php.ini файл в каталоге вашего сайта на хостинге и написать в нем:

max_file_uploads = 400

Это разрешенный способ перезаписать php.ini на большинстве хостингов (но не в localhost XAMP и т. Д.), Насколько я пытался

1 голос
/ 21 мая 2011

Возможно, вы работаете с post_max_size или upload_max_filesize , устанавливая ограничения.

Вы можете изменить их в php.ini (post_max_size должен быть больше, чем upload_max_filesize)

0 голосов
/ 21 мая 2011

Для параметра конфигурации max_file_uploads установлено ограничение в 20.

http://de3.php.net/manual/en/ini.core.php#ini.max-file-uploads

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...