Php 什么时候应该使用自己定义的webroot和server root

Php 什么时候应该使用自己定义的webroot和server root,php,Php,这就是我获取web根目录和服务器根目录的方式 web root是我的文件所属的文件夹名称,server root是C:/xampp/htdocs/folder\u名称 我只是想问一下什么时候应该使用webroot和server root 我只是注意到,如果您引用的是文件ex:href或img src,那么只有web根可以工作,而不是服务器根 但是,如果您需要一个文件,例如,require_once'file.php'只有服务器根才能工作,而webroot不行我认为你把事情复杂化了。您可以按如下方

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

web root是我的文件所属的文件夹名称,server root是
C:/xampp/htdocs/folder\u名称

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

我只是注意到,如果您引用的是文件ex:href或img src,那么只有web根可以工作,而不是服务器根


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

我认为你把事情复杂化了。您可以按如下方式构建路径:

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

$webRoot  = str_replace(array($docRoot, 'library/config.php'), '', $thisFile);
$srvRoot  = str_replace('library/config.php', '', $thisFile);
因此,如果要添加
require\u once
请在脚本顶部执行以下操作:

$_SERVER['DOCUMENT_ROOT'] . "/your/path/here"
引用图像时,可以执行以下操作:

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


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

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

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

注意:这里的所有代码都不会使您获得“web根目录”

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

$\u服务器['DOCUMENT\u ROOT']
将返回文件所在服务器上的路径,如:
C:/xampp/htdocs/

要获取“web根目录”,您需要使用
$\u SERVER['SERVER\u NAME']
。这将返回您
example.com
(或其他任何内容)。您可能需要在其上附加
http://

<img src="/my/path/image.jpg" alt="" />
您也可以将
/
用作web根目录

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

我认为您将服务器上的路径与URL中的路径混淆了。为什么不直接使用
$\u server['DOCUMENT\u ROOT']。“/您的/路径/这里”先生/代码>先生,我没有得到它。请解释在处理Web服务器上的文件时,您必须考虑两个“空格”。这里有一个“文件系统空间”,当你在命令提示符下或通过(比如)Windows资源管理器查看服务器时,它就是你的服务器视图<代码>c:\foo\bar\baz.txt
。然后是“web空间”,它是URL提供的服务器视图,例如
http://example.com/baz.txt
。在处理文件系统操作时使用webroots通常不起作用。我的服务器中的路径是服务器根,而web根是url中的路径,但是请阅读我的问题,但是当我通过href引用一个文件,并且img src web root不起作用,因此也不起作用时,情况如何?请回答我关于web root的问题,为什么我应该删除str replace?@user1892732:为什么你认为你需要它?
$\u服务器
数组包含您需要的所有字符串,无需手动解析
\u文件
。但是$\u服务器['DOCUMENT\u ROOT'没有我的文件所在的文件夹belongs@user1892732:那不是“根”文件夹。那只是一个子文件夹。查看
var\u dump($\u服务器),它有很多有趣的东西。
<img src='http://example.com/images/wall.png" />
<img src='/images/wall.png" />
$serverPath = dirname(__FILE__); // or __DIR__
$webPath = dirname($_SERVER['PHP_SELF']);