PHP在服务器中获取网站根绝对URL?

时间:2012-06-07 04:01:53

标签: php

我非常依赖$_SERVER["DOCUMENT_ROOT"]获取绝对路径。但是,对于URL未指向根目录的网站,这不起作用。

我的网站存储在以下文件夹中:

  • 站点1
  • 站点2

直接在根目录内。有没有办法在服务器中获取当前站点根目录的路径?

它应该返回:

   /var/chroot/home/content/02/6945202/html/site1 // If the site is stored in folder 'site1'
   /var/chroot/home/content/02/6945202/html // If the site is stored in the root

3 个答案:

答案 0 :(得分:12)

您只需将dirname($_SERVER['SCRIPT_NAME'])追加到$_SERVER['DOCUMENT_ROOT']

<强>更新

网站似乎是“挂载”在该文件夹上的目录,因此SCRIPT_NAME显然是/

因此,为了完成这项工作,您必须使用__DIR__dirname(__FILE__)来查找脚本在文件系统中的位置。

更新2

整个网站没有单个index.php控制器,因此也无法使用。

以下表达式执行字符串“减法”以查找公共路径。你有一个已知的前缀(文档根),一个未知的(根文件夹)和一个已知的后缀(脚本路径),所以要找到前两个,你取完整的绝对路径(__FILE__)并减去已知后缀:

substr(__FILE__, 0, -strlen($_SERVER['SCRIPT_NAME']));

如果包含的文件需要此值,则必须先将其存储在常量中,然后才能包含相关脚本。

答案 1 :(得分:1)

对于未来的googlers,这对我也有用

substr(substr(__FILE__, strlen(realpath($_SERVER['DOCUMENT_ROOT']))), 0, - strlen(basename(__FILE__)));

答案 2 :(得分:0)

使用以下方法从服务器设置中获取绝对根网址

   str_replace($_SERVER['DOCUMENT_ROOT']."/",$_SERVER['PHPRC'],$_SERVER['REAL_DOCUMENT_ROOT'])

或使用getcwd()。它获取应用程序的当前工作目录