获取php中的主站点文件夹路径


get the main site folder path in php

在PHP中,如何在站点中的任何位置获取站点文件夹路径

例如:/var/www/sitename

这就是我目前得到的:

$r1 = $_SERVER['document_root']          //  = /var/www
$r2 = __DIR__                           //  = /var/www/sitename/view/folder/subf
$r3 = str_replace($r1 . '/', '', $r2);  //  = sitename/views/folder/subf
$arr = explode('/', $r3);               //  = array (sitename, views, folder ...)
$sitepath = $r1 . '/' . $arr[0]         //  = /var/www/sitename

还有其他最简单的方法吗?。

EDIT:在不同的服务器上有很多不同名称的站点副本,可能是site1(/var/www/site1)或sitexx347(/var/ww/witexx347)或onemoresite.com(public_html/onemoresite),我想知道它在网站上的任何地方,所以不要调用

require_once '../../../../../../config.php';

require_once $_SERVER['DOCUMENT_ROOT'] . '/IveNoIdeaWhatTheNameIs/config.php';

我可以做到:

require_once $sitepath . 'config.php';

我重复一遍,我不知道网站名称是什么。

编辑2:我现在做这件事的方式很完美,我只是想知道一个最简单的方法。事实上,这可以缩短为这样做:

$r = explode('/', str_replace($_SERVER['DOCUMENT_ROOT'].'/', '', __DIR__));
$sitepath = $_SERVER['DOCUMENT_ROOT'] . '/' . $r[0];

$_SERVER['DOCUMENT_ROOT']应该能做到这一点。如手册所述

当前脚本在其下执行的文档根目录,如服务器的配置文件中所定义。

不能将/var/www/sitename配置为根目录。

编辑:你有几种不同的方式,但我认为你所拥有的一切都很好。请确保您在缩短的版本中从explode()获得了第一个元素。

问题是获取站点文件夹名称,无论脚本位于何处,无论站点名称是什么,无论项目位于何处(本地主机或在线),我都在谷歌上搜索了它,但一无所获。似乎没有一种非常简单的方法可以做到这一点。
这是我对的回答

$r = explode('/', str_replace($_SERVER['DOCUMENT_ROOT'].'/', '', __DIR__));
$sitepath = $_SERVER['DOCUMENT_ROOT'] . '/' . $r[0];

第一行返回一个数组,其中该代码所在的脚本的路径用"/"分隔"没有文档根目录(public_html或/wamp/www或/var/www)
第二行将document_root与第一个数组元素连接起来,该数组元素是站点FOLDER名称(不是主机名,在本例中这不是我们想要的)

因此,你可以在网站内的任何地方使用

ex1(linux本地):在site1/controller/controller.php中,您将获得/var/www/site1

ex2(服务器在线):在sitename/views/index.php中,您将获得/public_html/sitename
**主机名可能是differentname.com,并且不会更改。

ex3(Windows/wamp)在site2/classes/other/sub.php中,您将获得C:''wamp/www/site2

将一些php文件放在您想要的位置,并获得$name=dirname(file);

http://php.net/manual/en/function.dirname.php