只是为了确认,正在使用:
$_SERVER["DOCUMENT_ROOT"]
与使用相同:/
在 HTML 中。
例如。如果当前文档是:
folder/folder/folder/index.php
我可以使用(在 HTML 中)从根开始:
/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/
呈现服务器 url 的根,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 路径相关的服务器端路径。但是,不,它们不可互换。 /
它们不可互换,因为例如,服务器端路径永远不应发送到客户端 (HTML) 端。的值$_SERVER['DOCUMENT_ROOT']
不是/
;它是服务器向客户端显示的服务器的本地文件路径/
。因此, 的值${$_SERVER['DOCUMENT_ROOT']}/images/thumbnail.png"
可能是/var/www/html/images/thumbnail.png
服务器上的字符串,可以从客户端的 url 访问该路径的本地文件http://example.com/images/thumbnail.png
注意:$_SERVER['DOCUMENT_ROOT']
不包括尾随/
最简单的方法是拥有良好的站点结构并将其写为常量。
DEFINE("BACK_ROOT","/var/www/");