dr.Brain

doctor Brain

мир глазами веб-разработчика

PHP: max_input_vars

для чего нужен параметр max_input_vars в PHP

dr.Brain

время чтения 3 мин.

Photo by Pierpaolo Riondato on Unsplash

Для начала, немного информации о параметре max_input_vars.

max_input_vars - числовой параметр, устанавливающий ограничение на количество переменных, которое можно передать в POST-запросе. Обычно, это ограничение имеет значение, когда на бэкенд-сервер с PHP данные передаются из API или при заполнении формы на веб-сайте.

Несмотря на то, что для данного параметра значение по умолчанию равно 1000 (одна тысяча), часто возникают ситуации, в которых необходимо наложить ограничение на количество передаваемых переменных или, наоборот, увеличить их количество.

Почему этот параметр нужно уменьшать?

Давайте представим, что у Вас есть приложение, которое манипулирует ограниченным количеством переменных. Например, нужны только такие параметры, как имя пользователя, e-mail и пароль. В таком случае можно уменьшить значение max_input_vars, ограничив количество передаваемых на сервер данных, что, несомненно, положительно скажется на уровне безопасности приложения.

Почему этот параметр нужно увеличивать?

Пусть это звучить безумно, но потребность в передаче более тысячи переменных в POST-запросе не является чем-то исключительным, в особенности при взаимодействии с API.

Например, на Вашем сервере хранится информация о заработной плате. Чтобы провести начисления, нужно через API системы учета рабочего времени получить информацию о всем отработанном времени в часах и минутах для каждого сотрудника. В больших компаниях, данные быстро преодолеют лимит, равный 1000 переменных, именно поэтому необходимо увеличить значение параметра max_input_vars.

Начиная с версии PHP 5.3.9 для max_input_vars установлен режим изменения равный PHP_INI_PERDIR. Поэтому, значение параметра может быть изменено только в файлах php.ini, .htaccess, httpd.conf или .user.ini. Он не может быть изменен с помощью функции ini_set(), и, если Вы попробуете ей воспользоваться, результата все равно не будет.

Как установить значение max_input_vars в php.ini?

Значение max_input_vars можно установить в файле php.ini. В этом случае оно будет применяться обязательно при каждой загрузке сервера.

  1. Найдите файл php.ini, который обычно размещен в директории php (если Вы работаете в XAMMP, файл находится здесь - xampp/php/php.ini).
  2. Откройте файл для редактирования, далее найдите строку, содержащую параметр max_input_vars (обычно консоль поиска открывается сочетанием клавиш CTRL+F).
  3. По умолчанию найденная строка выглядит так: ; max_input_vars = 1000 (обратите внимание на комментирующую точку с запятой в начале строки).
  4. Удалите точку с запятой, и замените значение 1000 на нужное Вам (если Вы не удалите точку с запятой, будет применяться значение по умолчанию равное 1000).
  5. Сохраните файл и перезапустите веб-сервер (если Вы не перезапустите веб-сервер, для параметра будет применяться ранее установленное значение).

Как установить значение max_input_vars в .htaccess?

Использование .htaccess для изименения значения max_input_vars - более простой и гибкий метод. Такой подход можно применять, когда есть ограничения, накладываемые совместным хостингом.

  1. Найдите файл .htaccess Вашего проекта.
  2. Откройте его и добавьте строку php_value max_input_vars 1234 (естественно, значение 1234 необходимо заменить на нужное Вам).
  3. Сохраните файл. Изменения вступят в силу, перезагружать веб-сервер не нужно.

Как установить значение max_input_vars в httpd.conf?

Еще один способ изменения значения параметра max_input_vars - это его определение в файле httpd.conf. Если вы работаете с локальным сервером, XAMMP файл будет находиться здесь - xampp/apache/conf.

  1. Найдите файл httpd.conf (обычно он находится в папке conf директории веб-сервера).
  2. Откройте файл и наберите код приведенный в примере ниже (при необходимости замените mod_php7.c для PHP 7 на mod_php5.c для PHP 5 и, конечно, замените значение 1234 на нужное Вам).
  3. Сохраните файл.
  4. Перезапустите веб-сервер.

    <IfModule mod_php7.c>
    php_value max_input_vars 1234
    </IfModule>
    

Заключение

В данной статье мы узнали, для чего нужен параметр max_input_vars и разобрали три способа изменения его значения. Применимость каждого из предложенных способов зависит от веб-окружения Вашего проекта. Надеюсь, хотя бы один из предложенных методов позволит сделать настройки Вашего проекта лучше.


Спасибо за внимание.

Новые публикации

Далее

Категории

О нас

Frontend & Backend. Статьи, обзоры, заметки, код, уроки.