2012-02-22 4 views
33

Я использую WAMP на своей локальной машине, когда представлен FORM (method = "POST") с 2000 полями ввода. Я могу читать только 1001 _POST. Т.е. с отладчиком Netbeans я могу ясно видеть, что размер _POST всегда 1001, если в форме больше 1001 полей ввода.Как увеличить максимальную переменную POST в PHP?

Я использовал этот код http://ideone.com/GAw14 для создания формы с N поля ввода и тестирования.

То же самое работает на другой машине (WAMP), где я могу видеть все переменные POST.

Пожалуйста, помогите мне решить мою проблему.

+1

Почему бы не перенести php.ini с другой машины и сравнить ее с вашей текущей машиной и посмотреть, что должно быть указано для переменных 'post_max_size' и т. Д.? –

+0

Вы используете Suhosin (Hardened PHP)? – jprofitt

+0

Я не знаю, ограничивает ли это php или веб-браузер ... –

ответ

76

В PHP 5.3.9 представлен параметр конфигурации max_input_vars, который по умолчанию имеет значение 1000. Ознакомьтесь с разделом Runtime Configuration руководства по PHP. Значение по умолчанию и журнал изменений находятся в верхней части страницы.

Значение может быть изменено путем обновления php.ini сервера, добавления файла .htaccess или adding a line to httpd.conf.

+0

Отлично !!! Спасибо. Вы правы :) –

+1

Кредит идет сотруднику, у которого была эта проблема только вчера, а затем была достаточно хороша, чтобы поделиться своими выводами с командой :) – lightster

+1

Для кого-то, ищущего в будущем, я обнаружил, что по умолчанию сервер cPanel с 2013-03-15 ограничил количество входных переменных до 512. Некоторые из наших скриптов прошли значительно больше, чем при добавлении max_input_vars в php .ini исправил проблему. –

-1

Я подозреваю, что проблема связана с количеством данных, поступающих с вашим запросом POST. Нет установки, которая ограничивает количество $ _POST vars, которое может быть установлено. Однако для данных POST существует ограничение на память, которое по умолчанию составляет 8 МБ.

В файле php.ini попробуйте изменить значение post_max_size и установите его на более высокое значение. Не забудьте перезапустить apache после внесения изменений.

+0

Я изменил post_max_size на 81M также 0 и перезапустил WAMP, все еще проблема существует. –

17

Если вы используете Suhosin с закаленным PHP, вы можете получить максимальный предел переменных, который он налагает. В вашем php.ini, вы можете просто добавить

[suhosin] 
suhosin.request.max_vars = 1000 
suhosin.post.max_vars = 1000 

изменения 1000 все, что вы хотите, и перезапустить веб-сервер.

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

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

+0

Спасибо. Я не использую Сухозина. –

+1

Нет suhosin для php5.4 или php5.5 :( – ZiTAL

0

Я решил эту проблему. Откройте конфигурационный файл php.ini и добавьте эти строки

[Suhosin]

suhosin.post.max_vars = 20000

suhosin.request.max_vars = 20000

3

Я решил мой $ _POST макс входы -задача, добавив следующее php.ini:

max_input_vars = 5000 
suhosin.request.max_vars = 5000 
suhosin.post.max_vars = 5000 

Обратите внимание на suhosin.request.max_vars также.

+0

'max_input_vars' отлично вписывался в мое дело :) – Vineet

Смежные вопросы