У меня очень большая форма html (содержащая таблицу со строками, содержащую несколько входов), которую мне нужно отправить на PHP скрипт через запрос POST. Проблема в том, что некоторые значения не проходят и отсутствуют в PHP $_POST суперглобальной.
Я проверил (используя расширение Firebug), что значения фактически отправляются на сервер браузером.
$_ POST заселяется, но некоторые значения просто отсутствуют.
Я проверил, что является сырым запросом, используя:
$raw_post = file_get_contents('php://input');
а возвращаемая строка имеет значения. Они просто не анализируются в массив $_POST. Странная вещь, которую я заметил, кажется, что входные значения php://сокращаются после некоторой длины, а остальная часть строки не переходит в $_POST.
Я подумал о post_max_size и memory_limit и установил их в большие значения:
memory_limit = 256M
post_max_size = 150M
but according to php documentation $_POST should not contain any values if request made is bigger than post_max_size.
Из-за большого размера формы и запроса я не могу опубликовать ее здесь, но я могу отправить php script, я использовал для отладки проблемы:
var_dump($file = file_get_contents('php://input'));
var_dump($_POST);
//... then i parsed the $file
Версия сервера: Apache/2.2.9 (Debian)
PHP-версия: PHP 5.3.2-0.dotdeb.2
Можно объяснить причину такого странного поведения PHP, и что мне делать (изменить настройки php, код?), чтобы использовать массив $_POST при обработке формы?
EDIT: чтобы быть ясным: не только значения отсутствуют. $_POST также не содержит эти ключи.
e.x. фрагмент исходного сообщения:
t_dodparam%5B198%5D=&t_dodparam2%5B198%5D=&t_kolejnosc%5B198%5D=199&n_indeks=201&n_wartosc=testtesttest
Ключ "t_dodparam" находится в столбце и имеет ключ 198. Остальные параметры отсутствуют (ex t_dodparam2 находится в сообщении, но у него нет такого ключа, как 198, и нет такого ключа, как n_wartosc в $_POST)