0
$thisFile = str_replace('\\', '/', __FILE__);
$docRoot = $_SERVER['DOCUMENT_ROOT'];

$webRoot  = str_replace(array($docRoot, 'library/config.php'), '', $thisFile);
$srvRoot  = str_replace('library/config.php', '', $thisFile);

这就是我获取 Web 根目录和服务器根目录的方式

web root是我的文件所属的文件夹名称,server rootC:/xampp/htdocs/folder_name

我只想问我什么时候应该使用 webroot 和 server root。

我只是注意到如果你引用一个文件 ex: href 或 img src,那么只有 web root 可以工作,而不是 server root

但是,如果您需要文件,例如。require_once 'file.php';只有服务器根工作不是 webroot

4

2 回答 2

1

我认为你把事情复杂化了。您可以像这样构建路径:

$_SERVER['DOCUMENT_ROOT'] . "/your/path/here"

因此,如果您要require_once在脚本顶部添加一个这样做:

require_once($_SERVER['DOCUMENT_ROOT'] . "/your/path/here.php") 

引用图像时,您可以这样做:

<img src="/my/path/image.jpg" alt="" />

/其带回根并从那里构建路径。

于 2012-12-10T20:08:45.543 回答
0

您将服务器路径与 URL 路径混淆了。

在您的服务器上,文件存储在C:/xampp/htdocs/folder_name,但根据您的网络浏览器,它们位于http://localhost/folder_name。当您的浏览器加载文件时,它不知道它们位于C:/xampp/htdocs/.

注意:您拥有的任何代码都不会为您提供“网络根”。

__FILE__将返回您服务器上文件的路径,例如:`C:/xampp/htdocs/include/header.php.

$_SERVER['DOCUMENT_ROOT']将返回文件所在服务器上的路径,例如:C:/xampp/htdocs/.

要获得您的“网络根”,您需要使用$_SERVER['SERVER_NAME']. 这将返回您example.com(或其他)。你可能需要附加http(s)://到它。

$serverRoot = $_SERVER['DOCUMENT_ROOT'];
$webRoot = ($_SERVER['HTTPS'] ? 'https://' : 'http://') . $_SERVER['SERVER_NAME'];

您也可以只/用作您的网络根目录。

<img src='http://example.com/images/wall.png" />

<img src='/images/wall.png" />

应该是等价的。

试试看var_dump($_SERVER);,它会给你一些有趣的信息。

编辑dirname如果要获取“根文件夹”下的“子文件夹”,请使用。以上将为您提供主根。

$serverPath = dirname(__FILE__); // or __DIR__
$webPath = dirname($_SERVER['PHP_SELF']);
于 2012-12-10T20:17:17.353 回答