Отправка формы PHP завершается после отправки 271 переменной

У меня небольшая проблема с отправкой нескольких форм:

Я пытаюсь отправить большее количество $_POST-variables, однако мой серверный скрипт завершается (или просто перестает работать) после того, как в общей сложности будут отправлены 271 переменных формы.

Пробуем на localhost, все работает нормально, без проблем. Здесь всего представлена ​​771 переменная поста.

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

Итак, вот моя конфигурация сервера:

max_execution_time  30  30
max_input_nesting_level 64  64
max_input_time  60  60
max_input_vars  1000    1000
memory_limit    256M    256M
post_max_size   8M  8M

конфигурация localhost:

max_execution_time  30  30
max_file_uploads    20  20
max_input_nesting_level 64  64
max_input_time  60  60
max_input_vars  1000    1000
memory_limit    256M    256M
post_max_size   8M  8M

Как видите, это та же конфигурация ... У меня также есть suhosin - extension, установленная на моем сервере, конфигурация по умолчанию. Я не так хорошо знаком с этим расширением, но использование значений по умолчанию должно иметь такое влияние (я думаю :))

Серверная версия PHP: 5.3.9
Локальная версия: 5.3.17

Проблема очень похожа на эту .

Я уже несколько недель пытаюсь решить проблему, если есть какие-то идеи .. было бы просто здорово;)

Благодарность :)

ОБНОВИТЬ:

если я использую этот подход (спасибо):

$pairs = explode("&", file_get_contents("php://input"));
$vars = array();
foreach ($pairs as $pair) {
    $nv = explode("=", $pair);
    $name = urldecode($nv[0]);
    $value = urldecode($nv[1]);
    $vars[$name] = $value;
}
print_r($vars);

Я вижу все переменные формы и содержимое, которое я показываю раньше. Однако доступ к переменным $ _POST напрямую с помощью

isset($_POST['LanguageContentForm']

и сохранение этого в переменной не работает ..: /


person runFatTony    schedule 28.03.2013    source источник
comment
С localhost запрос POST будет передаваться быстрее, поэтому он может не попасть в max_execution_time. Если вы уменьшите max_execution_time на localhost до чего-то очень маленького, сможете ли вы воспроизвести проблему локально? Точно так же, если вы увеличите значение на удаленном сервере, проблема все еще останется?   -  person andyb    schedule 28.03.2013
comment
может это помочь? stackoverflow.com/questions/5077969/   -  person Natrium    schedule 28.03.2013
comment
Можете ли вы проверить файл журнала apache и зарегистрировать ли какие-либо ошибки?   -  person Amit    schedule 28.03.2013
comment
Это может повлиять на вас: phpclasses .org / blog / post / Разве нельзя просто обновить серверную версию PHP?   -  person madflow    schedule 28.03.2013
comment
@andyb уменьшение значения max_execution_time не имело никакого эффекта ...: /   -  person runFatTony    schedule 28.03.2013
comment
Если у вас есть так много переменных для публикации, не могли бы вы ввести свои данные в файл csv, загрузить их на сервер, а затем обработать их из файла csv? Вероятно, это будет быстрее, чем обработка огромной формы.   -  person starshine531    schedule 28.03.2013
comment
@ starshine531 это форма для перевода языков, также разделенная на несколько файлов ...   -  person runFatTony    schedule 28.03.2013


Ответы (1)


Если вы проверите phpinfo (), вы увидите var для suhosin.post.max_vars на каждой машине.

Вы должны иметь возможность изменить его в .htaccess примерно так:

php_value suhosin.post.max_vars 1000
php_value suhosin.request.max_vars 1000

Обновлять

Может быть, и этот:

suhosin.request.max_varname_length

Type: Integer
Default: 64

Определяет максимальную длину имени (исключая возможные признаки массива) переменных, которые могут быть зарегистрированы через COOKIE, URL-адрес или через запрос POST. Этот параметр также является верхним пределом для директив конфигурации, зависящих от источника переменной.

person AbsoluteƵERØ    schedule 28.03.2013
comment
на удаленной машине установлено значение 800 .. разве этого не должно быть достаточно? - person runFatTony; 28.03.2013
comment
Есть много разных флагов для сухосина. Если вы передаете массивы вместо прямых переменных, для них тоже есть ограничения ... вот хорошая ссылка: hardened-php.net/suhosin/configuration.html - person AbsoluteƵERØ; 28.03.2013
comment
Он установлен на 256 в конфигурации сервера. - person runFatTony; 28.03.2013