В PHP размер загружаемого файла определяется параметрами upload_max_filesize и post_max_size, параметры задаются в php.ini
php.ini — файл в котором определяются настройки PHP, которые будут использоваться при выполнении скриптов. php.ini может быть один и существовать только на уровне сервера или их может быть несколько (например, для каждого сайта).
Стандартный файл php.ini выглядит чаще всего примерно следующим образом (приведены основные параметры):
- memory_limit = 32M
- max_execution_time = 60
- max_input_time = 60
- upload_max_filesize = 128M
- post_max_size = 128M
- magic_quotes_gpc = Off
- magic_quotes_runtime = Off
- magic_quotes_sybase = Off
- mail.log = /home/admin/sendmail.log
- expose_php = Off
- date timezone=Asia/Yekaterinburg
Все существующие настройки можно посмотреть в phpinfo
Важными для работы сайтов параметрами является значение директивы, определяющей временную зону, а также memory_limit — ограничение памяти для процессов не стоит задавать слишком большим, это повлечет выделение излишка памяти РНР, остальным же процессам ресурсов сервера при этом может не хватать.
Хорошей практикой является установка memory_limit минимальным возможным (увеличивать значение стоит маленькими шагами при появлении в логах PHP записей такого вида:
Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 4104 bytes))
Задание размера загружаемых файлов в php.ini
Максимальный размер загружаемого файла определяется директивой upload_max_filesize и задается в мегабайтах. Типовые значения для большинства сайтов 4-256 Мб, может быть значительно больше, всё зависит от того какие файлы загружаются.
Также есть параметр post_max_size, в PHP размер загружаемого файла определяет и он. Им задается объем файла при передаче на сервер POST запросом, а все формы обратной связи и загрузки на сервер выполняются POST запросами.
Изменения, внесенные в php.ini вступают в силу после окончания времени жизни процесса, задаваемого max_execution_time или при выполнении в консоли команды pkill php.
Стоит иметь в виду, что upload_max_filesize задает ограничение на уровне РНР. также определенные ограничения существуют на уровне веб-сервера, они задаются в конфигурационных файлах — если файлы нужного размера не загружаются — в большинстве случаев, следует проверить конфиги Nginx и Apache.
Для Nginx в логах часто можно обнаружить ошибки Client intended to send too large body, которые устраняются увеличением лимитов в конфигурационных файлах.