【问题标题】:`$_SERVER['SCRIPT_NAME']` includes REST resource instead of just the php file`$_SERVER['SCRIPT_NAME']` 包括 REST 资源,而不仅仅是 php 文件
【发布时间】:2015-11-17 17:22:54
【问题描述】:

考虑下面的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

【问题讨论】:

    标签: php apache rest


    【解决方案1】:

    SCRIPT_NAME 由网络服务器(Apache、NGINX 等)定义。根据您的服务器配置,SCRIPT_NAME 的值会有所不同。您需要检查两台机器上的 vhost 配置并确保它们匹配。

    【讨论】:

    • 正确。我印象深刻。
    猜你喜欢
    • 1970-01-01
    • 2014-06-18
    • 2015-10-07
    • 2010-10-21
    • 2021-07-26
    • 1970-01-01
    • 1970-01-01
    • 2023-04-02
    • 2015-02-09
    相关资源
    最近更新 更多