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