我已经在PHP中实现了一个web服务。该服务接受名称/值对作为输入,并返回JSON编码的字符串。
在我的本地apache web服务器上运行在mac-osx和windows 7上,一切都像预期的那样工作。然而,在这个基于linux的web服务提供商上托管我的PHP脚本后,我对该服务的POST请求失败。
失败的后端PHP脚本如下:
if (session_id() == "") {
session_start();
}
ob_start();
$command = isset($_REQUEST["Command"]) ? $_REQUEST["Command"] : "";
if ($command == "") {
echo("Handler Not Found: ");
print_r($_REQUEST);
}
POST请求到带有Command=do_foo
的url的输出总是Handler Not Found:
。就好像web服务从未接收到我发送的任何参数一样。$_REQUEST
的值打印为:
[PHPSESSID] => db0af76fe8028e70dc96f816d0dbe927
如果我将调用方法更改为GET,一切都按预期工作。我错过了什么?
PS:我在使用apache.http.client.methods.HttpGet
和`apache.http.client.methods.HttpGet
的Android应用程序中调用此web服务。我已经验证,即使我通过FireFox插件Poster
我有同样的问题,如果我使用
$_POST
超级全局。我不能ssh到我的主机服务器,但CPANEL显示我
register_globals=off
。我不知道这会不会产生问题。
查看ini设置变量order或request-order。也许POST变量被禁用以包含在$_REQUEST
超全局变量中
可能$_REQUEST
被禁用了。您应该使用$_POST
,因为它更安全。
检查.htaccess
是否有LIMIT条目,例如:
<Limit POST>
order deny,allow
deny from all
</Limit>