我运行了一个测试,$_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()
和字符串串联来获取各种项目文件和目录的路径。