Php максимальное количество post переменных

Как увеличить максимальную переменную POST в PHP?

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

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

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

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

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

Значение можно изменить, обновив php.ini сервера, добавив файл .htaccess или добавив строку в httpd.conf .

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

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

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

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

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

Я решил свои $ _POST max input -problem, добавив следующее в php.ini:

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

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

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

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

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

Источник

Установка лимитов PHP на обработку данных из форм

Перечень настроек PHP, которые могут ограничить отправку форм и файлов через POST-запрос.

Описание директив

post_max_size

Устанавливает максимальный размер данных, отправленных методом POST, включая размер загружаемых файлов, по умолчанию 8Mb .

  • Для загрузки больших файлов это значение должно быть больше значения upload_max_filesize.
  • Значение можно указать числом в байтах, K (в килобайтах), M (в мегабайтах) и G (в гигабайтах).
  • Значение «0» снимает ограничение только в версиях PHP 5.3.2 и 5.2.12.

Пример в htaccess:

php_value post_max_size 100M

upload_max_filesize

Максимальный размер загружаемых файлов на сервер. По умолчанию 2Mb.

Пример:

php_value upload_max_filesize 100M

max_input_vars

Максимальное количество переменных, которое может быть принято в одном запросе. По умолчанию 1000.

Если данный лимит будет превышен, то после отправки формы массив $_GET или $_POST будет пустым.

Пример:

php_value max_input_vars 2000

max_execution_time

Директива задаёт максимальное время в секундах, в течение которого скрипт должен полностью загрузиться. Если этого не происходит, работа скрипта завершается. По умолчанию на загрузку даётся 30 секунд.

Значение «0» снимает ограничение на время выполнения.

Пример:

php_value max_execution_time 600

Также, максимальное время выполнения скрипта задает функция set_time_limit($seconds) .

max_input_time

Задаёт максимальное время в секундах, в течение которого скрипт должен разобрать все входные POST или GET данные. Это время измеряется от момента, когда PHP вызван на сервере до момента, когда скрипт начинает выполняться.

  • Значение по умолчанию «-1» – будет использоваться max_execution_time.
  • Значение «0» – без ограничений по времени.

Пример:

php_value max_input_time 600

memory_limit

Задаёт максимальный объем памяти в байтах, который разрешается использовать скрипту. По умолчанию 128Mb.

Пример:

php_value memory_limit 200M

Установка директив в .htaccess

# Максимальный размер данных php_value post_max_size 110M # Максимальный размер файлов php_value upload_max_filesize 100M # Максимальное количество переменных php_value max_input_vars 2000 # Максимальное время выполнения скрипта php_value max_execution_time 600 # Максимальное время обработки данных php_value max_input_time 600 # Память для скрипта php_value memory_limit 200M 

Установка директив в PHP-скрипте

ini_set('post_max_size', '110M'); // Максимальный размер данных ini_set('upload_max_filesize', '100M'); // Максимальный размер файлов ini_set('max_input_vars', '2000'); // Максимальное количество переменных ini_set('max_execution_time', '600'); // Максимальное время выполнения скрипта ini_set('max_input_time', '600'); // Максимальное время обработки данных ini_set('memory_limit', '200M'); // Память для скрипта

Получение значений в PHP-скрипте

Действующие значения настроек PHP можно посмотреть с помощью функции phpinfo() или получить значение параметра настройки с помощью функции ini_get($option) .

Получение значения upload_max_filesize в PHP:

'; echo 'Максимальный размер файлов: ' . ini_get('upload_max_filesize') . '
'; echo 'Максимальное количество переменных: ' . ini_get('max_input_vars') . '
'; echo 'Максимальное время выполнения скрипта: ' . ini_get('max_execution_time') . '
'; echo 'Максимальное время обработки данных: ' . ini_get('max_input_time') . '
'; echo 'Память для скрипта: ' . ini_get('memory_limit') . '
';

Результат:

Максимальный размер данных: 128M Максимальный размер файлов: 128M Максимальное количество переменных: 10000 Максимальное время выполнения скрипта: 300 Максимальное время обработки данных: -1 Память для скрипта: 1024M

Возможные ошибки

После отправки формы с множеством полей, массив $_POST пустой.
В форме количество полей превышает значение max_input_vars.

Ошибка «Fatal error: Allowed memory size»
Скрипт превысил значение параметра PHP memory_limit.

Ошибка «504 Gateway Time Out»
– Скрипт выполняется слишком долго, нужно увеличить значение max_execution_time. Как правило после вывода этой ошибки в браузере, скрипт будет еще какое-то время работать.

Источник

Ограничение на количество POST переменных

Проблема в следующем: попался вредный хостер — не позволяет отправить методом POST в одном запросе более 355 переменных (это не ограничение на объем передаваемых данных — post_max_size) — не могу найти что это за ограничение и вообще настройка ли это php или apache. Может кто сталкивался? Подскажите как обойти.

На серваке:
— PHP Version 5.2.14
— System Linux
— Apache 2.0

Добавлено через 15 часов 6 минут
Все всем спасибо, проблема решилась — хостер отключил ModSecurity — кому интересно что это: http://www.modsecurity.org

Передача переменных (get/post/.)
Привет. В общем вот кусочек кода, имеется input text с именем "name" значение которого нужно.

Сравнение переменных POST со значениями из БД
Здравствуйте уважаемые, сразу к сути вопросу. Есть определенный скрипт, который сравнивает значение.

Фильтрация не известных post переменных
Есть скрипт который рандомно генерирует окончание у name и info. Этот скрипт трогать нельзя.

Извлечение переменных. Метод POST
Суть:есть памятник и нужно выбрать в каком городе он находится. Вот html: <!DOCTYPE html>.

Присвоение переменных каждому значению в массиве POST
Доброго времени суток! Передаю через аякс на обработчик множество разных переменных и значений.

Передача переменных post и не только из стандартных форм html
Скажите пожалуйста, можно ли передать переменные в файл php не только средствами html, мне нужно по.

Есть ли ограничение на количество переменных в программе
вопрос вот в чем я столкнулся с проблемой что программа стала подвисать когда я добавляю очередные.

Ограничение 100Kb на метод Post
При отправке данных методом Post существует ограничение в 100 кб, можно ли его как-нибудь увеличить.

Источник

Как увеличить максимальную переменную POST в PHP?

Я использую WAMP на своей локальной машине, когда отправляется FORM (method = «POST» ) с 2000 полями ввода. Я могу читать только 1001 _POST. i. С отладчиком Netbeans я могу ясно видеть, что размер _POST всегда 1001, если в форме больше 1001 полей ввода. Я использовал этот http://ideone.com/GAw14 java-код для создания формы с N поля ввода и тестирования. То же самое работает на другой машине (WAMP), где я могу видеть все переменные POST. Пожалуйста, помогите мне решить мою проблему.

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

@Lenny Ленни, возможно, однако, я думаю, что переменная post_max_size влияет на это и увеличивает, что должно решить проблему. Поскольку он работает с другой установкой, как указано в OP, есть вероятность, что новая установка имеет меньший набор post_max_size и это просто необходимо увеличить.

Веб-браузер никогда не удаляет записи. В последних версиях PHP было изменено значение max_input_vars security.stackexchange.com/questions/10646/…, чтобы оно могло повлиять на вас. Проверьте, действительно ли вам нужно 2000 переменных (многие брандмауэры также выполняют такую фильтрацию, чтобы ваш код не был переносимым)

post_max_size = 81M на рабочей машине, я изменил это значение и перезапустил wamp, проблема все еще существует. Я не пользуюсь Suhosin, установил WAMP и все. Я пытался использовать Chrome и Firefox. Нет разницы.

@Brad F Jacobs Полезно знать, потому что я думаю, что столкнулся с этой проблемой еще в то время, и хотя это был веб-браузер 🙂

5 ответов

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

Значение можно изменить, обновив сервер php.ini, добавив файл .htaccess или добавив строку в httpd.conf.

Кредит идет на коллегу, у которого была эта проблема только вчера, а затем было достаточно приятно поделиться своими выводами с командой 🙂

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

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

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

сменив 1000 на все, что вам нужно, и перезапустите веб-сервер.

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

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

Источник

Читайте также:  Определение максимального элемента массива python
Оцените статью