只是确认一下,使用以下代码是否正确:
$_SERVER["DOCUMENT_ROOT"]
与在HTML中使用“/”相同。
例如,如果当前文档为:
folder/folder/folder/index.php
我可以在HTML中使用<base>来从根目录开始:
/somedoc.html
而在 PHP 中,我要使用以下代码实现相同的功能:
$_SERVER["DOCUMENT_ROOT"] . "/somedoc.html";
这样正确吗?有更简单的方法吗?
<a href="<?php echo $_SERVER['DOCUMENT_ROOT'].'/hello.html'; ?>">go with php</a>
<br />
<a href="/hello.html">go to with html</a>
尝试自行操作,您会发现它们并不完全相同。
$_SERVER['DOCUMENT_ROOT']
会呈现出实际的文件路径(在我的电脑上运行为自己的服务器,则是 C:/wamp/www/
)。
HTML 中的 /
会呈现出服务器网址的根目录,在我的情况下则是 localhost/
。
但是,C:/wamp/www/hello.html
和 localhost/hello.html
实际上是同一个文件。
/
指的是从公共html文件夹中引用您网站的根目录。 DOCUMENT_ROOT
指的是包含您网站的文件夹在服务器上的本地路径。
例如,我在一台计算机上安装了EasyPHP ...
$_SERVER["DOCUMENT_ROOT"]
给我file:///C:/Program%20Files%20(x86)/EasyPHP-5.3.9/www
,但任何我只使用/
链接的文件将相对于我的www
文件夹。
如果您想从服务器的根目录为文件提供绝对路径,则可以使用DOCUMENT_ROOT
。 如果您想从您网站的根目录为文件提供绝对路径,请只使用/
。
$_SERVER['DOCUMENT_ROOT']
包含了与客户端URL路径 /
相对应的服务端路径。但是,它们不能互换使用。$_SERVER['DOCUMENT_ROOT']
的值不是 /
; 它是服务器本地文件路径,指向服务器在 /
这个位置展示给客户端的文件。 因此,在可从客户端路径 http://example.com/images/thumbnail.png
访问位于服务器上该路径的本地文件时,${$_SERVER['DOCUMENT_ROOT']}/images/thumbnail.png"
的值可能是字符串 /var/www/html/images/thumbnail.png
。$_SERVER['DOCUMENT_ROOT']
不包括结尾的 /
。/
即可,而不应该使用 $_SERVER['DOCUMENT_ROOT'] 作为参考地址。 - Martin最简单的方法是拥有良好的站点结构并将其编写为常量。
DEFINE("BACK_ROOT","/var/www/");
DOCUMENT_ROOT
和hello.html
之间需要一个斜杠/
。 - sachleen