$ _SERVER [“SERVER_NAME”]和$ _SERVER [“DOCUMENT_ROOT”]是否始终瞄准同一目录?

时间:2011-09-16 19:17:57

标签: php url webserver url-routing

$_SERVER["SERVER_NAME"];$_SERVER["DOCUMENT_ROOT"];是否始终解析到同一目录?有没有他们不会的情景?

修改

为了澄清,我知道这些不是一回事 - 我只想确定SERVER_NAME是否始终映射到DOCUMENT_ROOT。即,如果通过跟随它们中的每一个,将始终到达服务器文件系统上的相同物理位置。

3 个答案:

答案 0 :(得分:2)

  • SERVER_NAME是互联网可用地址 - stackoverflow.com
  • DOCUMENT_ROOT是当前目录的绝对URL - 在server / data / stackoverflow / ...中

但是,它确实针对同一目录(每次)

答案 1 :(得分:1)

SERVER_NAME不是它应该是实际域名的路径。您可能希望包含REQUEST_URI,它将从Web服务器的角度为您提供绝对路径(假设您只是使用文件.REQUEST_URI为您提供用户输入的路径.Web服务器或PHP本身可以提供甚至不在文件中的内容)

为此,这实际上取决于$some_relative_path

中的内容

DOCUMENT_ROOT是您的网站文件实际存在于服务器上的绝对服务器路径。 DOCUMENT_ROOT可能对包含其他PHP文件很有用,但它永远不会暴露给连接客户端,因为这会带来安全风险。

在任何情况下它们都不应该相同,除非由于某种原因有人在服务器上设置/作为文档根目录。这可能是一个非常糟糕的主意,因为即使是系统文件也会暴露在网络上。

答案 2 :(得分:0)

SERVER_NAME是执行脚本的服务器的名称。它也可以是虚拟主机名。

DOCUMENT_ROOT是您正在执行的脚本的路径。如果您正在运行某种网址重写,则它可能与SERVER_NAME

的值相同