php获取文件的根目录

时间:2012-04-15 13:05:33

标签: php include require

我如何获得主文件夹的根目录?例如,我在这个位置运行文件:

public_html/admin/user/etc/index.php

我希望包含来自

的文件
public_html/includes/user/etc/function.php

所以我想做这样的事情:

include(get_first_default_folder().'includes/user/etc/function.php');

而不是:

include('../../../includes/user/etc/function.php');

3 个答案:

答案 0 :(得分:3)

您可以使用$ _SERVER [' DOCUMENT_ROOT']中的文档根目录。

您可以在index.php文件中包含此行。


          include("{$_SERVER['DOCUMENT_ROOT']}includes/user/etc/function.php");

答案 1 :(得分:2)

我通常这样做。 $myDir = dirname(__FILE__);(或者您可以在PHP v5.3 +上使用__DIR__)是特定文件所在的目录名称。您知道层次结构中的位置,因此您可以轻松获得基础$myBaseDir = realpath('../../../'.$mydir)”。 Realpath扩展了它的规范版本的路径,不包括任何符号链接。在包含或以其他方式查找文件时,拥有完整路径还可以实现小的加速。

我这样做而不是使用$_SERVER['DOCUMENT_ROOT']的原因是,如果我从命令行运行脚本,那么环境变量可能不会存在 - 它是由网络服务器设置的。

答案 2 :(得分:1)

我猜这有点笨拙的方法,但它对我有用。在每个文件的开头,我定义了一个变量$root。第一级变量是$root = './'(这不是必需的),第一个子文件夹是$root = '../',第二个子文件夹是$root = '../../',依此类推。 $root始终将我带到我网站的根文件夹。

当我需要提供路径时,我只需执行include("{$root}includes/user/etc/function.php");

之类的操作

这帮助我摆脱了“没有这样的索引或文件”的警告,所以我会坚持下去,直到找到更好的方法做同样的事情。

或者,您可以为每个文件夹级别定义一个常量,这样您就不必在每个文件的顶部添加$root。 (尚未对其进行测试,因此我不知道以下语法是否正确。)相反,您可以执行以下操作:

  • {ROOT}包括/ user / etc / function.php“);`//根级文件
  • {SUBFOLDER_LEVEL_ONE}包含/ user / etc / function.php“);`//第一个子文件夹级文件

在某处定义常量后:

  • define(“ROOT”,“。/”);
  • define(“SUBFOLDER_LEVEL_ONE”,“.. /”);