我正在使用它:
echo dirname(__FILE__);
给出:
C:\UwAmp\www\myfolder\admin
但是我正在寻找路径:
C:\UwAmp\www\myfolder\
从当前脚本。怎么办?
答案 0 :(得分:71)
您可以这样做:
dirname(__DIR__);
或者:
__DIR__ . '/..';
...但是在Web服务器环境中,您可能会发现您已经在当前文件的工作目录中工作,因此您可以使用:
'../'
...引用上面的目录。您可以在PHP 5.3.0之前将__DIR__
替换为dirname(__FILE__)
。
您还应该注意what __DIR__
and __FILE__
refers to:
文件的完整路径和文件名。 如果在include中使用,则返回包含文件的名称。
所以它可能并不总是指向你想要它的位置。
答案 1 :(得分:14)
你可以尝试
echo realpath(__DIR__ . DIRECTORY_SEPARATOR . '..');
答案 2 :(得分:8)
echo dirname(__DIR__);
但请注意,PHP 5.3.0中添加了__DIR__
常量。
答案 3 :(得分:2)
包含文件的父目录为
dirname(getcwd())
例如该文件是 /var/www/html/folder/inc/file.inc.php 包含在其中 /var/www/html/folder/index.php
然后通过调用/file/index.php
getcwd() is /var/www/html/folder
__DIR__ is /var/www/html/folder/inc
so dirname(__DIR__) is /var/www/html/folder
但是我们想要的是 / var / www / html ,即 dirname(getcwd())
答案 4 :(得分:2)
您也可以使用
dirname(__DIR__, $level)
用于访问任何折叠级别而无需遍历
答案 5 :(得分:1)
对于谁,共享托管环境失败,仍然有机会使当前PHP低于7.0谁没有dirname( __FILE__, 2 );
,可以使用关注对象。
function dirname_safe($path, $level = 0){
$dir = explode(DIRECTORY_SEPARATOR, $path);
$level = $level * -1;
if($level == 0) $level = count($dir);
array_splice($dir, $level);
return implode($dir, DIRECTORY_SEPARATOR).DIRECTORY_SEPARATOR;
}
print_r(dirname_safe(__DIR__, 2));
答案 6 :(得分:1)
使用 $_SERVER['DOCUMENT_ROOT']
例如,如果您想从任何地方访问根目录上方的文件夹
$_SERVER['DOCUMENT_ROOT']."/../myfolder/spl-auto.php"
或者例如 C:\UwAmp\www\myfolder\admin
$admin = $_SERVER['DOCUMENT_ROOT']."/myfolder/admin/"
$myfolder = $_SERVER['DOCUMENT_ROOT']."/myfolder/"