1

我有一小段示例代码可以提取页面的 URI。此页面在 Linux/Apache 安装上运行:

$url = "";
if (!isset($_SERVER['REQUEST_URI'])) {
  echo "request_uri is not set";
  $url = "value could not be set, !isset on REQUEST_URI was true";
} else {
  $url = $_SERVER['REQUEST_URI'];
}
echo "url = $url <br />";

当我在浏览器中拉出此页面时,代码似乎已达到“else”条件,并且我得到了正确的 URI。

但是,当我使用“php filename.php”直接从命令行运行此代码时,代码似乎遇到了 if 条件,其中 REQUEST_URI 未设置。如果我删除“if”条件,我会收到错误“PHP Notice: Undefined index REQUEST_URI in...”

这让我有点疯狂!REQUEST_URI 有问题吗?为什么它会在浏览器和命令行之间返回不同的答案?我在哪里可以在服务器上查看此值是否实际设置并可以返回?

感谢您的任何帮助,您可以提供。

4

1 回答 1

3

如果您从浏览器调用它,您正在向 URI 发出请求,然后 HTTP 服务器正在执行 PHP 程序并告诉它该 URI 是什么。

如果您从命令行调用它,那么就没有 HTTP 请求,也没有 URI(也没有服务器)。

您得到的行为完全是意料之中的。

于 2016-02-01T18:05:28.653 回答