如何获取相关目录,无论它来自PHP中的哪个位置?
如果是,应始终为 。Path_To_DocumentRoot/a/b/c.php
/a/b
我用这个:
dirname($_SERVER["PHP_SELF"])
但是,当它被其他目录中的另一个文件包含时,它将不起作用。
编辑
我需要一个相对路径到文档根目录。它用于Web应用程序。
我发现还有另一个问题有同样的问题,但还没有被接受的答案。
如果是,应始终为 。Path_To_DocumentRoot/a/b/c.php
/a/b
我用这个:
dirname($_SERVER["PHP_SELF"])
但是,当它被其他目录中的另一个文件包含时,它将不起作用。
编辑
我需要一个相对路径到文档根目录。它用于Web应用程序。
我发现还有另一个问题有同样的问题,但还没有被接受的答案。
您是否有权访问 ?如果您这样做,请执行:$_SERVER['SCRIPT_NAME']
dirname($_SERVER['SCRIPT_NAME']);
应该工作。否则,请执行以下操作:
在 PHP < 5.3 中:
substr(dirname(__FILE__), strlen($_SERVER['DOCUMENT_ROOT']));
或 PHP >= 5.3:
substr(__DIR__, strlen($_SERVER['DOCUMENT_ROOT']));
您可能需要并且全部使其完全可移植,如下所示:realpath()
str_replace()
\
/
substr(str_replace('\\', '/', realpath(dirname(__FILE__))), strlen(str_replace('\\', '/', realpath($_SERVER['DOCUMENT_ROOT']))));
PHP < 5.3:
dirname(__FILE__)
>菲律宾比索 = 5.3:
__DIR__
编辑:
以下是获取所包含文件的路径相对于运行php文件的路径的代码:
$thispath = explode('\\', str_replace('/','\\', dirname(__FILE__)));
$rootpath = explode('\\', str_replace('/','\\', dirname($_SERVER["SCRIPT_FILENAME"])));
$relpath = array();
$dotted = 0;
for ($i = 0; $i < count($rootpath); $i++) {
if ($i >= count($thispath)) {
$dotted++;
}
elseif ($thispath[$i] != $rootpath[$i]) {
$relpath[] = $thispath[$i];
$dotted++;
}
}
print str_repeat('../', $dotted) . implode('/', array_merge($relpath, array_slice($thispath, count($rootpath))));