В данной статье речь пойдет об изменении ограничения на загрузку файлов в конфигурационных файлах PHP

Представим. Что вы установили LAMP (установка описана в этой статье) и настроили одну из CMS, например, Wordpress. И вот, дело доходит до загрузки файлов на ваш свежесозданный сайт, и вы видите уведомление о том, что размер файла слишком велик для загрузки. Причина, по которой вы получаете такое уведомление – конфигурационные файлы PHP.

Давайте отредактируем файл php.ini и увеличим максимальный размер загружаемых файлов до 100 мегабайт.

Открываем файл с помощью nano:

# nano /etc/php/7.0/apache2/php.ini

ВАЖНО: директория, в которой будет располагаться конфигурационный файл может отличаться, в зависимости от используемой версии PHP на сервере и операционной системы. В данном примере мы рассматриваем PHP7.0, установленную на Debian 9.

Нас интересуют 5 переменных, которые мы и будем редактировать, а именно:

  • max_execution_time – максимальное время, которое будет выполняться скрипт загрузки данных.
  • max_input_time – максимальное время, в течении которого будет осуществляться передача данных
  • upload_max_filesize – максимальный размер файла, доступный для загрузки. Данный пункт является для нас ключевым.
  • post_max_size - максимальный размер отправляемых данных.
  • memory_limitлимит оперативной памяти.

Хотя пункт upload_max_filesize указан как ключевой пункт, изменение только его не является достаточным для изменения максимального размера загружаемых файлов.

Начнем по порядку с последнего пункта – лимит оперативной памяти - memorylimit. Значение данного пункта также накладывает ограничение на максимальный размер файла, поскольку каждый файл, загружаемый на сервер вначале полностью записывается в оперативную память, поэтому значение переменной memorylimit должно быть равно или превышать значение uploadmaxsize. В нашем примере мы поднимаем планку для максимального размера файла до 100 мегабайт, поэтому память мы ограничим с небольшим запасом – 128 мегабайт.

ВАЖНО: ограничение на загрузку файлов можно увеличивать сколь душе угодно, однако внимательно изучите конфигурацию вашего сервера. Если вы располагаете VDS с 4 гигабайтами оперативной памяти, то внимательно подумайте, прежде чем устанавливать значение для memory_limit и upload_max_filesize в 3,4 или более гигабайт. Это вряд ли приведет к чему-то хорошему.

Post_max_size – с этим пунктом все просто – делаем его такого же размера как и upload_max_filesize - 100 мегабайт.

Upload_max_filesize устанавливаем согласно задаче – 100 мегабайт.

Max_input_time – здесь устанавливаем время в секундах, необходимое для загрузки файлов. Этот пункт устанавливается в зависимости от максимального размера файла и скорости передачи данных. Сделаем эту переменную равной 1000 сек.

Max_execution_time – делаем равной предыдущей переменной. Нет никакого смысла скрипту загрузки выполняться, если файлы не передаются. Так же не стоит делать значение меньше, чем указано в max_input_time, поскольку тогда не удастся полностью загрузить файл.

Изменением этих 5 переменных мы подняли ограничение на загрузку файлов до 100 мегабайт. Как видите, это не так уж и сложно, однако в заключение хочу добавить, что нужно помнить несколько простых правил:

  1. Значения max_input_time и max_execution_time не должны разительно отличаться.
  2. Значение post_max_size должно быть больше или равно upload_max_filesize.
  3. Значение post_max_size должно быть меньше, чем указано в memory_limit.

На этом все, удачи в настройке!