Я получаю сообщение об ошибке 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)