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