我如何获得主文件夹的根目录?例如,我在这个位置运行文件:
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');
答案 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
。 (尚未对其进行测试,因此我不知道以下语法是否正确。)相反,您可以执行以下操作:
在某处定义常量后: