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

时间:2013-07-23 17:11:19

标签: php

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

  

ex:/ 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

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

编辑:在不同服务器上有许多不同名称的站点副本,可以是site1(/ var / www / site1)或sitexx347(/ var / www / sitexx347)或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];

3 个答案:

答案 0 :(得分:1)

$_SERVER['DOCUMENT_ROOT']应该做到这一点。如the manual

中所述
  

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

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

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

答案 1 :(得分:0)

将一些php文件放在你想要的位置并获取$ name = dirname(FILE);

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

答案 2 :(得分:0)

嗯,无论在哪里找到脚本,都要获取站点文件夹名称,无论站点的名称是什么,无论位于项目的哪个位置(localhost或在线),我用google搜索它,我发现什么都没有。似乎没有超级简单的方法来做到这一点。
所以这是我对此的回答

$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 local):在site1 / controller / controller.php中你得到/ var / www / site1

     

ex2(服务器在线):在sitename / views / index.php中你会得到/ public_html / sitename   
**主机名可以是differentname.com,但不会更改。

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