PHP. Руководство по PHP. 2005
Наиболее распространенные ошибки
Глава 38. Загрузка файлов на сервер
Наиболее распространенные ошибки
Опция MAX_FILE_SIZE не должна позволять передачу файлов,
размер которых превышает лимит, установленный конфигурационной директивой
Ограничение по умолчанию составляет 2 мегабайта.
В случае, если установлено ограничения памяти, вам может понадобиться
увеличить значение опции memory_limit.
Убедитесь в том, что значение memory_limit
достаточно велико.
В случае, если опция max_execution_time
установлена слишком маленьким значением, необходимое время работы скрипта
может превышать это значение. Убедитесь в том, что значение
max_execution_time достаточно велико.
Замечание:
Директива max_execution_time only касается исключительно времени, используемого непосредственно самим скриптом. Время, потраченное на внешние действия, такие как системные вызовы при помощи функции system() или sleep(), обращения к базе данных, а также время, потраченное на загрузку файла и другие действия, происходящие вне скрипта, не учитываются при определении максимально допустимого промежутка времени, отведенного для выполнения скрипта.
Внимание
Директива max_input_time указывает максимально допустимое время в секундах для получения входящих данных, в т.ч. и загружаемых файлов. В случае, если вы имеете дело с несколькими или большими файлами, либо удаленные пользователи используют медленный канал, ограничение по умолчанию в 60 секунд может быть превышено.
Если директива post_max_size установлена слишком маленьким значением, большие файлы не смогут быть загружены на сервер. Убедитесь, что значение директивы post_max_size достаточно велико.
Если не проверять, с какими файлами вы работаете, пользователи могут получить доступ к конфиденциальной информации, расположенной в других директориях.
Следут заметить, что CERN httpd может отсечь все, что идет после 1-го пробела в получаемом от клиента заголовке content-type. Если у вас именно такой случай, CERN httpd не будет поддерживать возможность загрузки файлов.
Поскольку разные системы по-разному работают с файловой структурой, у вас нет никаких гарантий того, что файлы с экзотическими именами (например, которые содержат пробельные символы) будут обработаны корректно.
Разработчики не должны использовать одинаковые имена для полей ввода и полей выбора файла в пределах 1 и той же формы (например, используя имя вида foo[]).
Разъяснение сообщений об ошибках
Загрузка на сервер нескольких файлов