11

我非常依赖$_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
4

4 回答 4

15

您可以简单地附加dirname($_SERVER['SCRIPT_NAME'])$_SERVER['DOCUMENT_ROOT'].

更新

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

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

更新 2

整个站点没有单个index.php控制器,因此也不起作用。

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

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

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

于 2012-06-07T04:08:29.740 回答
1

对于未来的谷歌员工,这也适用于我

substr(substr(__FILE__, strlen(realpath($_SERVER['DOCUMENT_ROOT']))), 0, - strlen(basename(__FILE__)));
于 2013-06-28T10:25:47.187 回答
1

getcwd()用于当前脚本所在文件夹的当前绝对服务器路径。

您可以在网站顶部定义一个常量,以便网站的其余部分可以依赖该路径。

define('MY_SERVER_PATH', getcwd());
于 2015-09-10T14:52:53.593 回答
0

使用以下方法从您的服务器设置中获取绝对根 url

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

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

于 2016-02-20T06:31:59.767 回答