我将数据从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后,它运行正常。我有一些额外的东西装载以备将来使用,也许......也许它就是其中一个甩掉的东西。
答案 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,或者为该脚本禁用它。