текстовое поле иногда отсутствует в $ _POST, но content_length всегда корректен?

StackOverflow https://stackoverflow.com/questions/1192055

  •  19-09-2019
  •  | 
  •  

Вопрос

Странная ошибка обнаружилась на сервере, на котором запущен довольно активный сайт.

  • Сервер:Apache/2.2.3 (CentOS)
  • PHP:5.2.6
  • Ускоритель 0.9.5.3

При использовании составных форм иногда данные, отправляемые из текстовой области, будут отсутствовать в $_POST

Мы знаем, что данные были отправлены, потому что content_length показывает разумный размер более 1 КБ

Все остальные поля ввода в форме получены правильно.

Это НЕ зависит от конкретного браузера и происходит в IE / Firefox / Chrome.

Работает почти в 99% случаев, в среднем выходит из строя 1-2 раза на каждые сто сделанных сообщений.

В очень редких случаях нам удавалось воспроизвести это самим, поэтому мы знаем, что данные отправляются, просто не обрабатываются ни apache, ни php

Все эти настройки были проверены и являются приемлемыми в php.ini:

memory_limit
max_input_time
upload_max_file_size
post_max_filesize

в httpd.conf

LimitRequestBody
TimeOut

Хотелось бы услышать другие идеи, что бы это могло быть.Я не могу найти ни одной известной связанной ошибки для PHP.

Это было полезно?

Решение

Не уверен, что это проблема (непростой вопрос ^^), но если у вас есть сухошин исправление / расширение безопасности, вы пробовали деактивировать его?
(Я не знаю, активирован ли он по умолчанию в CentOS, но это может быть, учитывая, что он установлен в Ubuntu, которая "менее ориентирована на предприятие")

Я предлагаю это из-за это сообщение об ошибке, в котором есть пара заметок, в которых говорится, например :

[30 октября 2007, 11:02 UTC] sbauer в gjl-сеть dot net

Столкнувшись с этой проблемой, мы также обнаружили, что причиной этой проблемы был патч suhosin, который был - по умолчанию - настроен на максимальное ограничение длины файла cookie, переменные запроса, отправки, получения и сеанса.Например.для ПОСТА это выглядит следующим образом:

suhosin.post.max_array_depth 100 100 suhosin.post.max_array_index_length 64 64 suhosin.post.max_name_length 64 64 suhosin.post.max_totalname_length
256 256 suhosin.post.max_value_length 65000 65000 suhosin.post.max_vars
200 200

Для этих производных необходимо установить достаточно высокое число.Например.в нашем случае проблема заключалась в том, что наш ПОСТ данные были слишком длинными (как это, похоже, имеет место для многих из вас здесь).

Поэтому я предлагаю проверить ваш php.ini или (в соответствии с вашим дистрибутивом там часто находится suhosin.ini) и исправить приведенные выше значения или установить им значение 0, чтобы отключить его.Если эти производные финансовые инструменты не заданы, будут использованы значения по умолчанию.Вам нужно проверить / добавить:сухосин.пост.макс_....сухосин.запрос.max_...сухосин.получить.max_...сухосин.сессия.max_...сухосин.печенье.max_...

Обратитесь к вашему phpinfo(), где должны быть указаны эти значения!

И / или :

[13 ноября 2008, 16:58 UTC] кит из tdrnetworks точка com

Что касается enctype="multipart / form-data", то нет я обнаружил, что при заполнении переменных $ _POST я нашел свое решение состояло в отключении модуля безопасности Suhosin .

Попробуй!

Существует также примечание, в котором говорится :

[5 февраля, 18:49 UTC] нил дот Прессли в yahoo dot com

Я столкнулся с той же проблемой.У меня была html-форма с php-скриптами, в которой я отправлял переключатели или флажки.Когда я отправлял форму, PHP не находил никаких параметров post.это была случайность, какое-то время он был работает и некоторое время не.Даже я пробовал с Get, какое-то время это работало а какое-то время нет.Затем я меняю ENCTYPE с верхнего на нижний регистр и он начал работать идеально

Является ли ваша форма / страница HTML-валидной?Может быть, в некоторых редких случаях это не так?


Может быть, это поможет...Если нет, то мне любопытно узнать причину этой проблемы!

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top