$ _POST为空

时间:2010-11-02 16:23:20

标签: php flex apache post

我将数据从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\"}

看起来很奇怪w /所有斜线,但我striplashes()并且它工作正常...通常。

所以,它不是Flash,因为来自PHP的请求的行为方式相同。这似乎不是请求 - 因为相同的GET工作正常,Content-Type设置为'application / x-www-form-urlencoded'。我很确定它与最近的编译有关,但这就是我能够接受的。感谢您的任何建议。

Apache 2.2 PHP 5.3.3

更新:仍然没有让它工作,但看起来它可能是我的Apache配置的一部分。我认为我所做的一切都不合格,但我没有看到很多其他解决方案。有什么特别的东西我应该寻找检查我的配置吗?

更新2 :仅使用所需的模块和扩展重新编译Apache和PHP后,它运行正常。我有一些额外的东西装载以备将来使用,也许......也许它就是其中一个甩掉的东西。

3 个答案:

答案 0 :(得分:4)

我在PHP 5.3.2 Suhosin-Patch和htaccess文件覆盖时遇到了同样的问题:

php_value post_max_size = 150M

以下是一行解决方法:

parse_str(file_get_contents('php://input'), $_POST);

答案 1 :(得分:2)

首先,您的请求正文参数应该是URL编码的(可能是但是您为了可读性而对其进行了解码?)。其次,检查php.ini中的magic_quotes_gpc设置,它可能会有所不同。

最后,您可以通过读取原始POST数据来检查POST是否真正有效:

echo file_get_contents('php://input');

答案 2 :(得分:0)

如果所有其他方法都失败了,请在.htaccess文件中尝试:

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

如果出现此问题,请修复Apache的Mod Security,或者为该脚本禁用它。