Большие ошибки загрузки файлов с помощью PHP

У меня есть загрузка изображения для слайд-шоу, и пользователи постоянно загружают файлы размером 2 МБ плюс. Файлы под этим размером работают нормально, но файлы по размеру вызывают то, что выглядит как тайм-аут браузера.

Вот мои настройки php ini:

  • Максимальное выделение памяти: 12M
  • Максимальный размер загрузки файла: 10M
  • Макс. Размер HTTP-сообщения: 10M
  • Максимальное время выполнения: 60
  • Максимальное время синтаксического ввода: 120

Эти настройки находятся в самом файле конфигурации, и я могу их изменить напрямую. Изменения появляются при использовании phpinfo ().

Я запускаю сервер Apache и php 4.3.9 (выбор клиента, а не мой). Лимит запросов Apache установлен на значение по умолчанию, которое, как мне кажется, составляет около 2 ГБ?

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

Вся помощь, которую я могу найти в сети, указывает на вышеуказанные настройки в качестве виновников, но все эти настройки намного выше, чем этот 2 МБ-файл и 43-секундный тайм-аут.

Любые предложения, по которым я могу перейти отсюда, чтобы решить эту проблему?

Ниже приведены соответствующие настройки php ini из phpinfo (). Дайте мне знать, если мне нужно больше писать.

  • file_uploads On On
  • max_execution_time 60 60
  • max_input_nesting_level 64 64
  • max_input_time 120 120
  • memory_limit 12M 12M
  • post_max_size 10M 10M
  • safe_mode Выкл. Выкл.
  • upload_max_filesize 10M 10M
  • upload_tmp_dir no value no value

Related of "Большие ошибки загрузки файлов с помощью PHP"

Убедитесь, что в php.ini отображается сообщение об ошибках: display_errors = On ; это может дать вам понять, что происходит. Серверы производства обычно (должны) отключать отчет об ошибках.

У меня недавно была аналогичная проблема, и для меня работала настройка memory_limit. Если вы читаете содержимое файлов в переменных, каждая переменная занимает примерно столько же памяти, сколько и размер файла, что увеличивает требования к памяти сценариев.

Где эти настройки? Если вы используете .htaccess то ваша конфигурация Apache может не позволить вам переопределить эти параметры.

Я бы предложил проверить с помощью phpinfo (), если эти настройки действительно применяются или нет:

 <?php phpinfo(); ?> 

Если это общий хост, ваш хост мог бы установить ограничение, чтобы переопределить ваш.

В противном случае попробуйте сделать ограничение POST выше, чем размер загрузки файла. AFAIK, закачки отправляются.

Если проблема связана с тем, что хост переопределяет ваш тайм-аут, вы можете искать хост, который все еще использует Apache 1: в Apache 1 локальный .htaccess переопределяет глобальные настройки даже для таймаута.

В противном случае есть десятки Java-апплетов, доступных всего за несколько долларов (Google it). Они разбивают файл, загружают детали и прозрачно складывают части.

Это гарантированное исправление таймаута и имеет дополнительное преимущество, позволяющее пользователям приостанавливать и возобновлять загрузку, видеть прогресс и т. Д.

(Flash-пользователи не имеют этого преимущества.)