我何时应该使用自己定义的webroot和服务器根目录

时间:2012-12-10 20:01:36

标签: php

$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 root C:/xampp/htdocs/folder_name

我只想问我何时应该使用webroot和服务器root。

我只是注意到如果你引用文件ex:href或img src,那么只有web root工作但不是服务器root

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

2 个答案:

答案 0 :(得分: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="" />

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

答案 1 :(得分: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']);