我需要require_once一个位于我的站点根目录中的文件。我遇到的问题是,我不会总是知道根目录有多少级别来自我当前脚本的运行位置。所以我需要弄清楚需要多少个目录级别来require_once我的文件。
有时可能是:
require_once '../../file.php';
有时可能是:
require_once '../file.php';
或任何其他数量的目录级别。
如何计算从子目录中的任何位置到根目录需要多少“../”?
答案 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()
将返回当前工作目录字符串。