Загрузка файла 1GB с использованием php - PullRequest
1 голос
/ 01 октября 2010

Я пытаюсь загрузить файл размером 1 ГБ, используя скрипт php, и он отлично работает, если размер файла меньше 20 МБ, но когда я увеличиваю размер файла, чем после нажатия кнопки загрузки на веб-сайте, он загружает файл (я думаю,так как это занимает несколько минут) и после этого, вместо того, чтобы выполнить upload.php, мой firefox просит меня загрузить upload.php, поэтому я предполагаю, что файл загружается, но мой php-скрипт не выполняется.

Такжепосле поиска в Google я нашел следующие настройки для php.ini, которые я сделал, и моя функция php_info () показывает мне, что настройки были изменены ..

/ * php.ini start * /

memory_limit = 512M

post_max_size = 15000M

file_uploads = On

upload_max_filesize = 15000M

max_input_time =20000

max_execution_time = 20000

session.gc_maxlifetime = 20000

/ * php.ini end * /

Ответы [ 2 ]

7 голосов
/ 01 октября 2010

Ограничение на размер загружаемого файла ограничено НАМНОГО больше, чем просто PHP.У PHP есть свои ограничения, у Apache есть свои ограничения, у многих веб-сервисов есть свои собственные ограничения, и тогда у вас есть ограничение на размер каталога / tmp, который может быть установлен пользовательскими разрешениями на общем хосте.Не говоря уже о нехватке места на жестком диске!

Ваш php.ini выглядит хорошо, но, как уже было предложено, проверьте LimitRequestBody в Apache и убедитесь, что ваш веб-сервис позволяет это.

Одним из распространенных решений, когда вам нужно загружать очень большие файлы, является использование Flash или Java на стороне клиента, поскольку они имеют доступ к реальной файловой системе клиента.Затем Flash / Java может разбить файл на маленькие кусочки, которые отправляются по одному и повторно собираются на стороне сервера.Это имеет несколько преимуществ.Во-первых, вы можете возобновить прерванные загрузки.Во-вторых, вам не нужно беспокоиться о тайм-аутах сценариев.В-третьих, он обходит любые возможные ограничения файловой системы, которые могут использоваться в PHP, Apache, веб-службах или других источниках.

1 голос
/ 01 октября 2010

Убедитесь, что ваш веб-сервер также позволяет такие большие загрузки.На Apache значение LimitRequestBody.Это ограничение применяется задолго до того, как PHP входит в изображение, и его нельзя изменить / переопределить изнутри PHP.

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