$ _POST пуст - PullRequest
       10

$ _POST пуст

1 голос
/ 02 ноября 2010

Я отправляю данные из приложения Flex в php-скрипт. GET работает нормально, но POST, похоже, ничего не передает. as3httpclintlib - это библиотека, с которой я работаю, однако я сомневаюсь, что это проблема, потому что репликация запроса в php дает мне тот же результат. Я осмотрелся, и, хотя, похоже, что есть несколько подобных проблем, ни одно из предложенных предложений не сработало.

Мой php.ini выглядит хорошо из того, что я могу сказать, однако я недавно перекомпилировал Apache и PHP.

//php.ini
...
variables_order = "EGPCS"
register_globals = off
register_argc_argv = On
post_max_size = 8M
gpc_order = "GPC"
...

тело запроса довольно просто:

data={\"id\":0,\"password\":\"abcdefg\",\"name\":\"testUser\",\"createdOn\":null,\"apikey\":\"hijklmn\"}

это выглядит странно со всеми слэшами, но я удаляю () и все работает нормально ... обычно.

Итак, это не Flash, потому что запрос от PHP действует так же. Это не запрос - по-видимому - потому что идентичный GET работает нормально, Content-Type установлен на 'application / x-www-form-urlencoded' . Я почти уверен, что это как-то связано с недавней компиляцией, но это все, что я смог сделать. Спасибо за любые предложения.

Apache 2.2 PHP 5.3.3

ОБНОВЛЕНИЕ : Все еще не работает, но похоже, что это может быть частью моей конфигурации Apache. Я не думал, что все, что я делал, было некачественным, но я не вижу много других решений. Есть ли что-то конкретное, что я должен искать для проверки моего конфига?

ОБНОВЛЕНИЕ 2 : После перекомпиляции Apache и PHP только с необходимыми модулями и расширениями все заработало нормально. У меня были загружены некоторые дополнительные вещи для будущего использования, возможно .... возможно, это был один из тех, кто выбрасывал вещи.

Ответы [ 3 ]

4 голосов
/ 05 ноября 2011

У меня была такая же проблема с PHP 5.3.2 Suhosin-Patch и переопределением файла htaccess:

php_value post_max_size = 150M

Вот обходной путь в одну строку:

parse_str(file_get_contents('php://input'), $_POST);
2 голосов
/ 02 ноября 2010

Во-первых, ваши параметры тела запроса должны быть закодированы в URL (возможно, это так, но вы расшифровали его для удобства чтения?).Во-вторых, проверьте настройку magic_quotes_gpc в php.ini, это может иметь значение.

Наконец, вы можете проверить, действительно ли POST работает, читая необработанные данные POST:

echo file_get_contents('php://input');
0 голосов
/ 02 ноября 2010

Если ничего не помогло, попробуйте это в файле .htaccess:

<IfModule mod_security.c>
    SecFilterScanPOST Off
</IfModule>

Если это проблема, либо исправьте Mod Security вашего Apache, либо отключите его для этого скрипта.

...