使用PHP查找当前目录级别

时间:2011-10-07 23:49:20

标签: php

我需要require_once一个位于我的站点根目录中的文件。我遇到的问题是,我不会总是知道根目录有多少级别来自我当前脚本的运行位置。所以我需要弄清楚需要多少个目录级别来require_once我的文件。

有时可能是:

require_once '../../file.php';

有时可能是:

require_once '../file.php';

或任何其他数量的目录级别。

如何计算从子目录中的任何位置到根目录需要多少“../”?

7 个答案:

答案 0 :(得分:5)

SITE_ROOT中创建一个常量index.php,并在需要指定路径的任何位置使用它,例如:

require_once SITE_ROOT . '/path/from/siteroot/to/file.ext';

答案 1 :(得分:5)

这是我想出的一种简单方法:

// get current file location
$pieces = explode("/", $_SERVER['PHP_SELF']);

// subtract 1 for left / and 1 for current file
$loop = count($pieces) - 2;

// loop until to root directory
for ($i=0; $i<$loop; $i++) {
    $up_dirs .= "../";
}

可能效率不如其他一些建议。但我测试了它并且它有效。

答案 2 :(得分:1)

您可以使用dirname(__FILE__)来确保它始终是您的包含文件所在的目录

答案 3 :(得分:1)

您可以使用$_SERVER['DOCUMENT_ROOT']获取网站的文档根目录,并假设代码中的任何内容都未更改当前工作目录,您可以使用getcwd()检索该目录。使用这两个路径,然后使用this comment中的代码来计算差异。

答案 4 :(得分:1)

有多种选择。但是你必须决定哪种情况适合你的情况:

  • spl_autoload
  • set_include_path
  • 使用include(dirname(__FILE__)."/file.php");
  • 进行相对路径遍历
  • include("$_SERVER[DOCUMENT_ROOT]/file.php");
  • 相关的服务器根路径

对于应用程序,可以使用预定义的根目录。对于图书馆来说,这也是首选方法。

答案 5 :(得分:0)

您可以指定从顶部开始的路径,例如

"/my/user/dir/file.php"

答案 6 :(得分:0)

getcwd()将返回当前工作目录字符串。