PHP: max_input_vars
для чего нужен параметр max_input_vars в PHP
Для начала, немного информации о параметре 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. В этом случае оно будет применяться обязательно при каждой загрузке сервера.
- Найдите файл php.ini, который обычно размещен в директории php (если Вы работаете в XAMMP, файл находится здесь - xampp/php/php.ini).
- Откройте файл для редактирования, далее найдите строку, содержащую параметр max_input_vars (обычно консоль поиска открывается сочетанием клавиш CTRL+F).
- По умолчанию найденная строка выглядит так: ; max_input_vars = 1000 (обратите внимание на комментирующую точку с запятой в начале строки).
- Удалите точку с запятой, и замените значение 1000 на нужное Вам (если Вы не удалите точку с запятой, будет применяться значение по умолчанию равное 1000).
- Сохраните файл и перезапустите веб-сервер (если Вы не перезапустите веб-сервер, для параметра будет применяться ранее установленное значение).
Как установить значение max_input_vars в .htaccess?
Использование .htaccess для изименения значения max_input_vars - более простой и гибкий метод. Такой подход можно применять, когда есть ограничения, накладываемые совместным хостингом.
- Найдите файл .htaccess Вашего проекта.
- Откройте его и добавьте строку php_value max_input_vars 1234 (естественно, значение 1234 необходимо заменить на нужное Вам).
- Сохраните файл. Изменения вступят в силу, перезагружать веб-сервер не нужно.
Как установить значение max_input_vars в httpd.conf?
Еще один способ изменения значения параметра max_input_vars - это его определение в файле httpd.conf. Если вы работаете с локальным сервером, XAMMP файл будет находиться здесь - xampp/apache/conf.
- Найдите файл httpd.conf (обычно он находится в папке conf директории веб-сервера).
- Откройте файл и наберите код приведенный в примере ниже (при необходимости замените mod_php7.c для PHP 7 на mod_php5.c для PHP 5 и, конечно, замените значение 1234 на нужное Вам).
- Сохраните файл.
-
Перезапустите веб-сервер.
php_value max_input_vars 1234
Заключение
В данной статье мы узнали, для чего нужен параметр max_input_vars и разобрали три способа изменения его значения. Применимость каждого из предложенных способов зависит от веб-окружения Вашего проекта. Надеюсь, хотя бы один из предложенных методов позволит сделать настройки Вашего проекта лучше.
Спасибо за внимание.