将文件夹升级一级

时间:2012-02-05 13:07:26

标签: php

我正在使用它:

echo dirname(__FILE__);

给出:

C:\UwAmp\www\myfolder\admin

但是我正在寻找路径:

C:\UwAmp\www\myfolder\
从当前脚本

。怎么办?

7 个答案:

答案 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/"