Перейти к содержимому

Max input vars что это

  • автор:

Php max input vars как увеличить wordpress?

По умолчанию в PHP установлено ограничение на количество переменных, передаваемых через GET, POST и другие запросы. Ограничение называется max_input_vars и может вызывать проблемы в WordPress, если вы работаете с большим количеством полей ввода или опций темы.

Чтобы увеличить значение max_input_vars в WordPress, выполните следующие действия:

  1. Откройте файл php.ini на вашем сервере. Если такого файла нет, создайте его.
  2. Найдите строку max_input_vars в файле php.ini .
  3. Измените значение max_input_vars на более высокое число. Например, установите значение max_input_vars = 5000 .
  4. Сохраните файл php.ini .
  5. Перезагрузите веб-сервер.

Если у вас нет доступа к файлу php.ini , вы можете попробовать добавить следующий код в файл functions.php вашей темы:

scss
ini_set('max_input_vars', 5000);

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

Ограничения max_input_vars или почему не сохраняются настройки

Max_input_vars — это количество входных переменных, которые могут быть приняты в одном запросе (ограничение накладывается на каждую из глобальных переменных $_GET, $_POST и $_COOKIE отдельно).

Использование этой директивы снижает вероятность сбоев в случае атак с использованием хеш-коллизий. Если входных переменных больше, чем задано директивой, выбрасывается предупреждение E_WARNING, и все последующие переменные в запросе игнорируются. Это ограничение применяется к каждому уровню вложенности входного многомерного массива.

В силу своих особенностей настройки, Zoo (и JBZoo) использует очень большие формы для работы с настройками сайта. К таким формам относятся редактирование полей материала, настройки позиций в шаблоне и импорт.

Если материалы используют большое количество элементов, есть вероятность, что сработают серверные ограничения — в нашем случае это max_input_vars. Они могут выглядеть как вылет на главную страницу панели управления. Либо форма просто не будет сохранять изменения.

Несколько способов уменьшить ограничения

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

Способ #1
  1. Узнать, где расположен ваш файл php.ini, значения которого подтягиваются в конфигурацию. Зайдите в Систему >Информация о системе >Информация о PHP > строка Loaded Configuration File, например, со значением /usr/local/lib/php.ini.
  2. Перейдите на сервер и откройте этот файл для редактирования.
  3. Найдите параметр max_input_vars. А если его там нет, то добавьте значение max_input_vars = 5000.
  4. Перезагрузите сервер.
  5. Проверьте: Система >Информация о системе >Информация о PHP >max_input_vars должно измениться на указанный вами.

На скриншоте значения из вкладки Информация о PHP

Информация о PHP

Способ #2 (для тех у кого нет управления сервером)

Нужно сделать следующее:

  1. Зайдите в корень Joomla через файловый менеджер или FTP.
  2. Найдите и откройте файл «.htaccess» (иногда для этого нужно переименовать файл в htaccess.txt. Не забудьте потом переименовать обратно в .htaccess)
  3. Добавьте строчку php_value max_input_vars 5000.
  4. Сохраните и проверьте Система >Информация о системе >Информация о PHP >max_input_vars должно измениться.

Значения, которые можно указывать в ограничениях

Значения параметра max_input_vars напрямую зависят от масштабов вашей работы. Допустим, если значение по умолчанию в 1000 вас не устроило, то представьте планируемый объем работ и пропорционально увеличьте значение. Рекомендуем поставить 3000, но если вдруг в работе возникнут снова «вылеты» на главный экран Joomla — значит его нужно поднять выше, например, до 5000.

Как показывает практика, бывают случаи, когда на web-сервере установлен нестандартный(!) PHP-модуль — suhosin.

Это можно увидеть через phpinfo()

Нестандартный PHP-модуль

Для этого в php.ini рекомендуем изменить и эти параметры

max_input_vars = 20000
suhosin.get.max_vars = 20000
suhosin.post.max_vars = 20000
suhosin.request.max_vars = 20000

Как исправить ошибку «Ошибка! Значение max_input_vars должно быть не ниже 10000. Текущее значение: 1000»

Ошибка появляется из-за накладываемых Битриксом ограничений на минимальное значение параметра равным 10000. Т.е. на Вашем сайте числовое значение параметра max_input_vars ниже чем 10000 (в случае ошибки значение обычно равно 1000).

  1. форма настроек инфоблоков,
  2. форма редактирования товара,
  3. форма редактирования раздела.

На что эта ошибка влияет?

  1. форма настроек инфоблоков,
  2. форма редактирования товара,
  3. форма редактирования раздела.

Поэтому, значение 10000 учитывает, что свойств может быть достаточно много. Хотя, иногда и 10000 бывает мало — в таком случае, значение приходится повышать.

  1. самый простой способ: настроить этот параметр в панели хостинга для нужного сайта (но этот способ годится только для виртуального хостинга, и то не у всех хостинг-провайдеров такая возможность имеется),
  2. если сайт работает на веб-сервере Apache, или связке Apache + nginx, то проще всего прописать конфиг в файле .htaccessв корне сайта:
    php_value max_input_vars 10000
    При этом данную строку нужно прописывать в блоке
    <IfModule mod_php7.c> . </IfModule>
    или, для старой версии PHP:
    <IfModule mod_php5.c> . </IfModule>
  3. также, для этого же случая, конфиг max_input_vars можно прописать в конфиге виртуального хоста Apache (но это не доступно на виртуальном хостинге, только на VPS):
    php_admin_value max_input_vars 10000
  4. в остальных случаях это следует прописать в php.ini — чтобы понять какой именно php.ini редактировать, можно заглянуть в просмотр конфигурации phpinfo (в админке Битрикс это Настройки — Инструменты — Диагностика — Настройки PHP), где следует обратить внимание на строки «Loaded Configuration File» и «Additional .ini files parsed». Если не получилось узнать, какой файл требуется модифицировать, спросите это у техподдержки хостинга.

Как исправить ошибку?

Решение простое — увеличить значение конфигурационного параметра max_input_vars.

Самое сложное в данном вопросе — понять, в каком файле требуется внести корректировку. Можем привести несколько советов:

  1. самый простой способ: настроить этот параметр в панели хостинга для нужного сайта (но этот способ годится только для виртуального хостинга, и то не у всех хостинг-провайдеров такая возможность имеется),
  2. если сайт работает на веб-сервере Apache, или связке Apache + nginx, то проще всего прописать конфиг в файле .htaccessв корне сайта:
    php_value max_input_vars 10000
    При этом данную строку нужно прописывать в блоке
    .
    или, для старой версии PHP:
    .
  3. также, для этого же случая, конфиг max_input_vars можно прописать в конфиге виртуального хоста Apache (но это не доступно на виртуальном хостинге, только на VPS):
    php_admin_value max_input_vars 10000
  4. в остальных случаях это следует прописать в php.ini — чтобы понять какой именно php.ini редактировать, можно заглянуть в просмотр конфигурации phpinfo (в админке Битрикс это Настройки — Инструменты — Диагностика — Настройки PHP), где следует обратить внимание на строки «Loaded Configuration File» и «Additional .ini files parsed». Если не получилось узнать, какой файл требуется модифицировать, спросите это у техподдержки хостинга.
TEXT_HELP-array(2) < ["TEXT"]=>string(516) " 

Мы имеем огромный опыт, на протяжении почти 15 лет помогая клиентам в решении самых различных проблем на их сайтах, в т.ч. самых сложных.

Поэтому, если Вы не имеете возможности решить эту проблему самостоятельно, обращайтесь к нам - мы поможем.

" ["TYPE"]=> string(4) "HTML" >

Требуется наша помощь?

Мы имеем огромный опыт, на протяжении почти 15 лет помогая клиентам в решении самых различных проблем на их сайтах, в т.ч. самых сложных.

Поэтому, если Вы не имеете возможности решить эту проблему самостоятельно, обращайтесь к нам — мы поможем.

По всем вопросам обращайтесь по нашим контактным данным:

  • электронной почте: info@webdebug.ru
  • телефон(только по срочным вопросам): +79882410850
  • Skype: webdebug (только режим переписки)
  • WhatsApp, Viber, Telegram: +79882410850 (только режим переписки)
  • форма обратной связи

doctor Brain

Для начала, немного информации о параметре 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. Перезапустите веб-сервер.

 php_value max_input_vars 1234 

Заключение

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

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

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

Photo by CHUTTERSNAP on Unsplash

JavaScript: сохраняем страницу в pdf

Photo by David Everett Strickler on Unsplash

2021-07-12

HTML: Полезные примеры

Photo by Pankaj Patel on Unsplash

2021-07-11

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *