PHP环境常量:SITE_HTMLROOT与DOCUMENT_ROOT



我运行了一个测试,$_SERVER["SITE_HTMLROOT"]$_SERVER["DOCUMENT_ROOT"]似乎都返回了相同的路径。他们有什么不同的情况吗?如果没有,有没有考虑选择其中一个?

正如$_SERVER[]的文档所解释的:

$_SERVER是一个数组,包含标头、路径和脚本位置等信息。此数组中的条目由web服务器创建。不能保证每个网络服务器都会提供这些服务;服务器可以省略一些,或者提供此处未列出的其他服务器。也就是说,在»CGI/1.1规范中考虑了大量的这些变量,所以你应该能够预料到这些变量。

还要注意,密钥名称以HTTP_开头的值是从HTTP请求标头中提取的,如果请求不包含相应的标头,则这些值将丢失。

关于您的问题:

他们有什么不同的情况吗?如果没有,有没有考虑选择一个而不是另一个?

正如@ÁlvaroGonzález在评论中解释的那样,$_SERVER["SITE_HTMLROOT"]由网络托管公司MediaTemple提供
很明显,在代码中使用$_SERVER["SITE_HTMLROOT"]将阻止它在另一个不提供值的环境中运行。

此外,我也不建议使用$_SERVER["DOCUMENT_ROOT"]。即使它可能适用于您可以访问的大多数环境,编写代码也更好(更容易),无需关心它在磁盘上的位置。它所需要的只是在项目目录中;您可以在运行时使用魔术常量__FILE__、函数dirname()和字符串串联来获取各种项目文件和目录的路径。

最新更新