REQUEST_URI设置或未设置

REQUEST_URI set or not set

我有一小段示例代码可以提取页面的 URI。本页 运行s 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有问题吗?为什么在浏览器和命令行之间会有 return 不同的答案?我可以在服务器上的什么地方查看此值是否实际设置并且 return 可用?

感谢您提供的任何帮助。

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

如果您从命令行调用它,则没有 HTTP REQUEST 也没有 URI(也没有 SERVER)。

您的行为完全符合预期。