$_SERVER['DOCUMENT_ROOT'] 和 $_SERVER['HTTP_HOST']

php
2022-08-30 21:40:30

我带着一个简单的问题(或相关问题)回来了。

这个问题很简单,但我还没有收到答案。我问过很多在PHP方面有不同经验的人。但我得到的回应是:“我没有任何想法。我从来没有想过这个问题。使用谷歌,我无法找到任何关于此的文章。我希望我能在这里得到一个满意的答案。

所以问题是:

和 有什么区别?$_SERVER['DOCUMENT_ROOT']$_SERVER['HTTP_HOST']

一个比另一个有什么优势吗?

我们应该在哪里使用HTTP_HOST,在哪里使用DOCUMENT_ROOT?


答案 1

DOCUMENT_ROOT

此站点的根目录由“常规”部分中的“DocumentRoot”指令定义,例如

DOCUMENT_ROOT=/var/www/example 

HTTP_HOST

主机的基本 URL,例如

HTTP_HOST=www.example.com 

文档根目录是您网站上的本地路径,在您的服务器上;http 主机是服务器的主机名。它们是相当不同的;也许你可以澄清你的问题?

编辑:你说:

案例 1 : 标头('位置: '. $_SERVER['DOCUMENT_ROOT'] .'/abc.php')

案例 2:标头('位置: '. $_SERVER['HTTP_HOST'] .'/abc.php')

我怀疑第一个只有在提供页面的同一台计算机上运行浏览器时才有效。

想象一下,如果其他人使用他们的Windows机器访问您的网站。您的Web服务器在HTTP标头中告诉他们,“嘿,实际上,重定向此位置:/var/www/example/abc.php。您希望用户的计算机做什么?

现在,如果你正在谈论类似的东西

<?php include($_SERVER['DOCUMENT_ROOT'] . '/include/abc.php') ?>

<?php include($_SERVER['HTTP_HOST'] . '/include/abc.php') ?>

这可能是有道理的。我怀疑在这种情况下,前者可能是首选,尽管我不是PHP大师。


答案 2

嗯,问题是什么? 包含当前 Web 的路径,在我的情况下。 包含 ,因为它在本地域上运行。区别是显而易见的,不是吗?DOCUMENT_ROOT/home/wwwHTTP_HOSTtesting.local

我不知道你在哪里可以互换这两者,那么你为什么要考虑优势呢?


推荐