31

只是为了确认,正在使用:

$_SERVER["DOCUMENT_ROOT"]

与使用相同:/

在 HTML 中。

例如。如果当前文档是:

folder/folder/folder/index.php

我可以使用(在 HTML 中)从根开始:

/somedoc.html

并在 PHP 中做同样的事情,我必须使用:

$_SERVER["DOCUMENT_ROOT"] . "/somedoc.html";

那是对的吗?有更简单的方法吗?

4

4 回答 4

40
<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

于 2012-08-13T04:00:49.187 回答
5

只是/指公共 html 文件夹中您网站的根目录。DOCUMENT_ROOT指的是服务器上包含您的网站的文件夹的本地路径。

例如,我在一台机器上安装了 EasyPHP...

$_SERVER["DOCUMENT_ROOT"]给了我file:///C:/Program%20Files%20(x86)/EasyPHP-5.3.9/www,但我链接到的任何文件/都将与我的www文件夹相关。

如果您想提供服务器上文件的绝对路径(从服务器的根目录),您可以使用DOCUMENT_ROOT. 如果您想从网站的根目录中提供文件的绝对路径,请使用/.

于 2012-08-13T04:01:52.760 回答
2

的,$_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']不包括尾随/

于 2018-11-11T07:33:04.603 回答
-4

最简单的方法是拥有良好的站点结构并将其写为常量。

DEFINE("BACK_ROOT","/var/www/");
于 2012-08-13T04:09:32.067 回答