`$ _SERVER ['SCRIPT_NAME']`包含REST资源而不仅仅是php文件

时间:2015-11-17 17:22:55

标签: php apache rest

考虑以下GET请求:www.foo.com/bar.php/rest/resource,那么应该是以下情况:

$_SERVER['SCRIPT_NAME'] === 'bar.php';

在我的本地计算机以及我们的开发服务器中都是如此。但在我们的测试服务器中:

echo $_SERVER['SCRIPT_NAME']; // bar.php/rest/resource

这是错误的。我很确定这是由一些Apache配置引起的,因为测试服务器的故障在从Apache 2.2升级到2.4.7(为我们的组织添加了配置)时开始发生。我阅读了Apache的升级/发布说明,似乎无法确定是什么。

更多信息: 我已经检查了PHP_SELF vs PATH_INFO vs SCRIPT_NAME vs REQUEST_URI,似乎我的PHP_SELF和SCRIPT_NAME已切换。而不是

[PHP_SELF] => /test.php/foo/bar [SCRIPT_NAME] => /test.php

我得到了

[PHP_SELF] => /test.php [SCRIPT_NAME] => /test.php/foo/bar

1 个答案:

答案 0 :(得分:2)

from TwitterAPI import TwitterAPI api = TwitterAPI(<CONSUMER_KEY>,<CONSUMER_SECRET>,<ACCESS_TOKEN>,<ACCESS_KEY>) iterator = api.request('statuses/user_timeline',{'screen_name'<SCREEN_NAME>}) for item in iterator: if 'text' in item: print(item['text']) 由网络服务器(Apache,NGINX等)定义。根据您的服务器配置,SCRIPT_NAME的值将不同。您需要检查两台计算机上的虚拟机配置,并确保它们匹配。