существует ли какой-либо предел аргументов POST? У меня есть ситуация, когда на dev-сервере моя форма с более чем 520 args размещена и сохранена без проблем, где на производстве env сохраняет только до 499 аргументов …
Есть идеи?
Я не думаю, что существует ограничение на количество переменных, отправленных через POST, только по их накопленному размеру . Предел варьируется от сервера к серверу.
Обновление: Исчерпывающий патч Suhosin PHP может фактически наложить ограничение на количество переменных запроса. Значение по умолчанию – 200. Suhosin устанавливается по умолчанию на Ubuntu, поэтому это может быть причиной вашей проблемы. Информация любезно предоставлена @ Паскалем Мартином, ура!
Для ограничения максимального размера POST существует два фактора:
Вы можете узнать его значение, используя phpinfo()
.
И ограничения веб-сервера:
В вашем конкретном случае вы можете захотеть добавить, какой сервер вы используете, и насколько велики данные. Являются ли аргументы 520 ближе к post_max_size
? Что произойдет, если вы выполните print_r($_REQUEST)
в сценарии получения?
Кроме того, в файле PNP.INI есть параметр:
max_input_vars
который в моей версии PHP: 5.4.16 по умолчанию – 1000.
Из руководства: «Сколько входных переменных может быть принято (ограничение применяется к $ _GET, $ _POST и $ _COOKIE суперглобальным отдельно)"
Ref .: http://www.php.net/manual/en/info.configuration.php#ini.max-input-vars
Да, это контролируется директивой post_max_size , которая по умолчанию равна 8M.
Количество аргументов не имеет значения, но вы, вероятно, превысите предел в своей продукции.
Вы можете запустить ini_get ('post_max_size') в обеих средах, чтобы увидеть, есть ли разница.
Вы не можете изменить его из ini_set, однако можно изменить директиву из .htaccess.
Я думаю, что ограничение POST – это то, что настроено в php.ini (по умолчанию 8M?)
Вам необходимо увеличить POST_MAX_SIZE в php.ini (или использовать ini_set () на странице).