Php $\u POST为空

Php $\u POST为空,php,apache-flex,apache,post,Php,Apache Flex,Apache,Post,我正在将Flex应用程序中的数据发布到php脚本中。GET工作正常,但POST似乎没有传输任何内容。as3httpclinlib是我正在使用的库,但是,我有点怀疑这是问题所在,因为在php中复制请求会得到相同的结果。我环顾四周,虽然似乎有许多类似的问题,但提出的建议都不起作用 我的php.ini看起来不错,但我最近重新编译了Apache和php //php.ini ... variables_order = "EGPCS" register_globals = off register_argc

我正在将Flex应用程序中的数据发布到php脚本中。GET工作正常,但POST似乎没有传输任何内容。as3httpclinlib是我正在使用的库,但是,我有点怀疑这是问题所在,因为在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工作正常,内容类型设置为'application/x-www-form-urlencoded'。我很确定这与最近的汇编有关,但这是我所能接受的范围。谢谢你的建议

Apache2.2 PHP 5.3.3

更新:仍然没有让它工作,但它看起来可能是我的Apache配置的一部分。我不认为我做的任何事情都不符合标准,但我没有看到其他很多解决方案。是否有什么特别的东西我应该寻找,以检查我的配置


更新2:仅使用所需的模块和扩展重新编译Apache和PHP后,它运行良好。我装了一些额外的东西以备将来使用,也许。。。。首先,您的请求主体参数应该是URL编码的(可能是,但您为了可读性而对其进行了解码?)。其次,检查php.ini中的magic_quotes_gpc设置,这可能会有所不同

最后,您可以通过读取原始POST数据来检查POST是否实际工作:

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

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

最后,您可以通过读取原始POST数据来检查POST是否实际工作:

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

如果所有其他操作都失败,请在
.htaccess
文件中尝试以下操作:

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

secfilters可以关闭

如果这是问题所在,请修复Apache的Mod Security,或者为该脚本禁用它。

如果所有其他操作都失败,请在
.htaccess
文件中尝试此操作:

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

secfilters可以关闭

如果这是问题所在,请修复Apache的Mod Security,或者为该脚本禁用它。

我在PHP 5.3.2 Suhosin修补程序和htaccess文件重写中遇到了相同的问题:

php_value post_max_size = 150M
以下是一个单行解决方案:

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

我在PHP 5.3.2 Suhosin修补程序和htaccess文件重写中遇到了同样的问题:

php_value post_max_size = 150M
以下是一个单行解决方案:

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

您是否确实在从flex应用程序执行POST http请求?是的,并已通过请求头对其进行了验证。您是否确实在从flex应用程序执行POST http请求?是的,并已通过请求头对其进行了验证。我在php中的响应如下所示:print\r($\u POST);回显文件\u获取\u内容('php://input'); echo$_服务器['CONTENT_TYPE'];我从中得到:Array()application/x-www-form-urlencoded。所以什么也没有发生php://input. 我的ini文件中有magic_quotes_gpc=On。我想这是对的?magic\u quotes\u gpc不受欢迎,因为它不可靠。在5.2中默认为打开,但在5.3中默认为关闭。这可能会给你带来麻烦。在我看来,它应该永远被禁用。你可以在magic_quotes_gpc上阅读更多内容。我在php中的回答如下:print_r($\u POST);回显文件\u获取\u内容('php://input'); echo$_服务器['CONTENT_TYPE'];我从中得到:Array()application/x-www-form-urlencoded。所以什么也没有发生php://input. 我的ini文件中有magic_quotes_gpc=On。我想这是对的?magic\u quotes\u gpc不受欢迎,因为它不可靠。在5.2中默认为打开,但在5.3中默认为关闭。这可能会给你带来麻烦。在我看来,它应该永远被禁用。你可以在magic_quotes_gpc上阅读更多内容。似乎没有什么不同。我甚至试过关闭SecFilterEngine。难怪它没有什么区别,我昨天在重新编译Apache时删除了它。当你从一个标准
中发布一些东西时会发生什么?这似乎是Apache和PHP的重新编译完成的。我仔细检查并完善了我拥有的模块和扩展。似乎没有什么不同。我甚至试过关闭SecFilterEngine。难怪它没有什么区别,我昨天在重新编译Apache时删除了它。当你从一个标准
中发布一些东西时会发生什么?这似乎是Apache和PHP的重新编译完成的。我仔细检查并完善了我拥有的模块和扩展。