首页 > 解决方案 > PHP:有没有比 $_SERVER['DOCUMENT_ROOT'] 更容易的 docroot 参考?

问题描述

/HTML在属性(默认情况下会转到 localhost/index.html 或 index.php)中使用斜杠 () 引用站点的“doc root”(例如 localhost/ href="/"),但我没有看到简单的方法在 PHP 中指定“docroot”,就像 $_SERVER['DOCUMENT_ROOT'] 所做的那样......

我已经读过,如果我用/(like '/some.log') 开始一条路径,则斜杠将引用 docroot,但我发现情况并非如此,因为我收到了文件写入权限错误,并且 realpath() 表示它正在尝试逐字写入到/的Linux根文件夹。

有没有一些简单的方法可以参考这个?我可以定义自己的常量,但基本文件(或普遍包含的文件)不一定是我们古老代码库中的常量......

标签: php

解决方案


许多$_SERVER值都填充了外部变量,并且DOCUMENT_ROOT是其中之一。它甚至也不是标准的CGI变量。如果您在 Apache 上运行 PHP,您将拥有这样的变量,该变量具有在 Apache 的DocumentRoot指令中设置的任何值。

现在,您可能假设文件系统路径和 URL 路径之间始终存在一对一的映射。情况并非总是如此。事实上,URL 重写和基于路由器的应用程序是当今的一种常态。

如果你加起来还有可能在 Apache 中配置虚拟主机和 PHP 的方法......事情是这样的$_SERVER['DOCUMENT_ROOT']

  • 不一定存在
  • 不一定正确
  • 可能根本没有帮助

因此,根据您的用例,您有多种选择:

  • 定义您自己的价值(我建议使用 PHP 常量)作为应用程序提升的一部分
  • 硬编码一条主要路径/
  • … 甚至$_SERVER['DOCUMENT_ROOT']按原样使用 ;-)

推荐阅读