Наиболее распространённые ошибки
Опция 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
достаточно велико.
Опция
max_file_uploads
контролирует максимальное количество загружаемых файлов в течение
одного запроса. Если загружается большее количество файлов,
чем указано в этом ограничении, то массив $_FILES
прекратит дальнейшую обработку файлов по достижении этого ограничения.
Например, если
max_file_uploads установлено
в 10
, то $_FILES никогда не будет
содержать больше 10 элементов.
Если не проверять, с какими файлами вы работаете, пользователи могут
получить доступ к конфиденциальной информации, расположенной в других
директориях.
Поскольку разные системы по-разному работают с файловой структурой,
нет никаких гарантий того, что файлы с экзотическими именами
(например, которые содержат пробельные символы) будут обработаны корректно.
Разработчики не должны использовать одинаковые имена для
обычных полей ввода (тег input
) и полей
выбора файла в пределах одной и той же формы (например, используя имя
для тега input
наподобие foo[]
).