3

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

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');
4

3 回答 3

3

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

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

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

于 2012-04-15T14:31:02.407 回答
2

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

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

于 2012-04-15T14:41:47.830 回答
1

我想这有点笨拙,但它对我有用。在每个文件的开头我定义了一个变量$root。第一级变量是$root = './'(这不是必需的思想),第一个子文件夹是$root = '../',第二个子文件夹是$root = '../../'等等。$root总是把我带到我网站的根文件夹。

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

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

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

  • {ROOT}includes/user/etc/function.php");` // 根级文件
  • {SUBFOLDER_LEVEL_ONE}includes/user/etc/function.php");` // 第一个子文件夹级别的文件

在某处定义常量后:

  • 定义(“根”,“./”);
  • 定义(“SUBFOLDER_LEVEL_ONE”,“../”);
于 2012-04-15T13:26:14.460 回答