PHP max_input_vars

Я получаю сообщение об ошибке max_input_vars .

Я понимаю, что есть параметр php.ini который может изменить это, начиная с версии 5.3.9, однако я запускаю версию 5.1.6.

Когда я просматриваю конфигурационную информацию для моего сервера 5.1.6, он показывает, что значение max_input_vars равно 1000.

Мой вопрос: несмотря на то, что я запускаю 5.1.6, я вижу этот параметр из phpinfo() но он не находится в файле php.ini . Означает ли это, что значение жестко закодировано в этой версии PHP и не может быть изменено?

Вы можете добавить его в php.ini, и он должен работать – просто протестировал его на PHP 5.3.6.

Ссылка на сеть PHP:

http://php.net/manual/en/info.configuration.php#ini.max-input-vars

Обратите внимание: вы не можете установить эту директиву во время выполнения с функцией ini_set(name, newValue) , например

 ini_set('max_input_vars', 3000); 

Это не будет работать.

Как поясняется в документации, эта директива может быть установлена ​​только для каждой области каталога, что означает, что файл .htaccess, httpd.conf или .user.ini (начиная с PHP 5.3).

См. http://php.net/manual/en/configuration.changes.modes.php

Добавление директивы в php.ini или размещение следующих строк в .htaccess будет работать:

 php_value max_input_vars 3000 php_value suhosin.get.max_vars 3000 php_value suhosin.post.max_vars 3000 php_value suhosin.request.max_vars 3000 

Попробуйте это исправить с помощью 5.3.3, и никаких изменений нет. Подойдя вокруг, я нашел эту веб-страницу http://anothersysadmin.wordpress.com/2012/02/16/php-5-3-max_input_vars-and-big-forms/, детализируя другие настройки, которые необходимо изменить, если ваш сервер использует патч Suhosin который Apache под Debian делает.

Сайт объясняет:

Итак, если вы хотите увеличить это число до, скажем, 3000 от номера по умолчанию, равного 1000, вы должны добавить в свои php.ini следующие строки:

max_input_vars = 3000 suhosin.post.max_vars = 3000 suhosin.request.max_vars = 3000

Я тестировал его (добавили настройки в php.ini как в / etc / php5 / apache2, так и / etc / php5 / cli, и перезапустили Apache успешно), но все еще нет переменной max_input_vars в phpinfo.

Несколько сайтов указывают на PHP 5.3.9 в качестве первой версии PHP, в которой это изменение будет иметь место, поэтому моя ошибка не RTM должным образом в первую очередь, хотя мне интересно видеть, как люди сообщают об этом, работая в версии выше 5.3.3 но ниже 5.3.9.

Вам нужно раскомментировать значение max_input_vars в файле php.ini и увеличить его (пример 2000), также не забудьте перезагрузить сервер, это поможет 99,99%.

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

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

Это определенно необходимо настроить в php.ini

Да, добавьте его в php.ini, перезапустите apache и он должен работать.

Вы можете протестировать его на лету, если хотите с помощью ini_set("max_input_vars",100)