$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
答案 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']);