PHP - загрузка одного или двух файлов (большие фотографии) работает нормально - загрузка 5/6 +, кажется, даже не регистрируется (она просто показывает форму загрузки) - PullRequest
0 голосов
/ 02 марта 2011

У меня есть страница с этим HTML:

<form method="post" enctype="multipart/form-data"  action="photo_test.php">

<input class="fupload" name="uploadedfile[1]" type="file" />
<input class="fupload" name="uploadedfile[2]" type="file" />
<input class="fupload" name="uploadedfile[3]" type="file" />
<input class="fupload" name="uploadedfile[4]" type="file" />
<input class="fupload" name="uploadedfile[5]" type="file" />
<input class="fupload" name="uploadedfile[6]" type="file" />


<input type=submit>

и немного php для обработки файлов. Если загружено несколько (обычно <5) фотографий, все работает нормально </p>

если я загружаю 5 или 6, кажется, что он даже не регистрирует, что я загрузил файлы Я протестировал это с добавлением кода выше (это на урезанной тестовой странице, чтобы понять, что не так)

При загрузке пары фотографий все работает нормально (то есть в print_r ($ _ FILES) он показывает детали файла. При загрузке 5 или 6 из них он просто печатает пустой массив (то же самое, что ничего не загружать)

есть идеи?

(это полный сценарий. Загрузка одного или двух изображений показывает данные в print_r ($ _ FILES). Загрузка 5 или более (ish), не показывает никаких данных. Каждая фотография составляет около 2-3mb)

<?


  ini_set('max_upload_filesize', 8388608);
 ini_set('upload_max_filesize', 8388608); 
 ini_set('memory_limit', '125M');
echo "<pre>";
print_r($_FILES);
print_r($_POST);

?> 


<form method="post" enctype="multipart/form-data"  action="photo_test.php">

<input class="fupload" name="uploaded[1]" type="file" />
<input class="fupload" name="uploaded[2]" type="file" />
<input class="fupload" name="uploaded[3]" type="file" />
<input class="fupload" name="uploaded[4]" type="file" />
<input class="fupload" name="uploaded[5]" type="file" />
<input class="fupload" name="uploaded[6]" type="file" />


<input type=submit>
</form>

результаты:

если я загружу только один файл

Array
(
    [uploadedfile] => Array
        (
            [name] => Array
                (
                    [1] => DSCN0426.JPG
                    [2] => 
                    [3] => 
                    [4] => 
                    [5] => 
                    [6] => 
                )

            [type] => Array
                (
                    [1] => image/jpeg
                    [2] => 
                    [3] => 
                    [4] => 
                    [5] => 
                    [6] => 
                )

            [tmp_name] => Array
                (
                    [1] => /tmp/phpNM967F
                    [2] => 
                    [3] => 
                    [4] => 
                    [5] => 
                    [6] => 
                )

            [error] => Array
                (
                    [1] => 0
                    [2] => 4
                    [3] => 4
                    [4] => 4
                    [5] => 4
                    [6] => 4
                )

            [size] => Array
                (
                    [1] => 2824091
                    [2] => 0
                    [3] => 0
                    [4] => 0
                    [5] => 0
                    [6] => 0
                )

        )

)
Array
(
)

, если я загружаю несколько файлов (5 или 6)

Array
(
)

Array
(
)

Ответы [ 4 ]

1 голос
/ 16 марта 2012

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

если вы работаете на localhost, вы можете легко изменить php.ini. но если вы хотите изменить на сервере Cpanel, вы можете следовать этому http://www.webhostingzone.org/change-php-settings.html

1 голос
/ 02 марта 2011

PHP обрабатывает фактическую загрузку перед выполнением вашего скрипта (и заполняет глобальный массив $ _FILES размером и путём tmp файла), поэтому любой вызов ini_get () или set_time_limit () в вашем скрипте будет быть бесполезным.

Вам нужно исправить это в своем php.ini, если вы находитесь в общем ящике, вам нужно спросить об этом своего интернет-провайдера.

Кроме того, не забудьте также увеличить значение post_max_size http://www.php.net/manual/en/ini.core.php#ini.post-max-size

0 голосов
/ 02 марта 2011

Что такое post_max_size вашего php.ini? Вы также должны изменить это значение (по умолчанию 8 МБ), поэтому ваш массив $ _POST пуст.

РЕДАКТИРОВАТЬ: upload_max_filesize и post_max_size нельзя изменить с помощью ini_set, поскольку их изменяемое состояние установлено в PHP_INI_PERDIR (см. http://be2.php.net/manual/en/ini.list.php) Это должен быть PHP_INI_USER.

Итак, вы неукоснительно придерживаетесь значений по умолчанию (вероятно, 2M и 8M), следовательно, пустых $ _FILES.

Вы должны изменить эти параметры, используя конфигурацию сервера (php.ini или apache conf) или файл .htaccess. Смотри http://php.net/manual/en/configuration.changes.php

0 голосов
/ 02 марта 2011

Возможно, время ожидания сценария истекло. Вы должны попробовать загрузить 6 очень маленьких файлов и / или посмотреть в set_time_limit()

...