从dirname(__FILE__)获得2级

时间:2011-06-28 18:02:18

标签: php return parent filepath

如何从当前文件返回路径名,只返回2个目录?

因此,如果我当前的文件网址正在返回theme/includes/functions.php

如何返回“theme /”

目前我正在使用

return dirname(__FILE__)

7 个答案:

答案 0 :(得分:86)

PHP 7

return dirname(__FILE__, 2);

PHP 4及更高版本

return dirname(dirname(__FILE__));

使用PHP7,您可以通过指定levels参数进一步提升目录树,而7之前的PHP将需要进一步嵌套dirname函数。

http://php.net/manual/en/function.dirname.php

答案 1 :(得分:39)

dirname(dirname(__FILE__));使用__DIR__

更简单
dirname(__DIR__);

适用于php 5.3 on。

答案 2 :(得分:4)

[ web root ]
    / config.php
    [ admin ] 
        [ profile ] 
            / somefile.php 

如何在somefile.php中包含config.php?您需要使用dirname和当前somefile.php文件中的3个目录结构。

require_once dirname(dirname(dirname(__FILE__))) . '/config.php'; 

dirname(dirname(dirname(__FILE__))) . '/config.php'; # 3 directories up to current file

答案 3 :(得分:2)

晚会,但您也可以执行以下操作,根据需要多次使用\..\..\来提升目录级别。

$credentials = require __DIR__ . '\..\App\Database\config\file.php';

相当于:

$credentials = dirname(__DIR__) . '\App\Database\config\file.php';

好处是它避免了必须嵌套dirname,如:

dirname(dirname(dirname(__DIR__))

请注意,这是在IIS服务器上测试的 - 不确定Linux服务器,但我不明白为什么它不起作用。

答案 4 :(得分:1)

正如@geo所建议的,这是一个增强的dirname函数,它接受带有dirname搜索深度的第二个参数:

/**
 * Applies dirname() multiple times.
 * @author Jorge Orpinel <jorge@orpinel.com>
 * 
 * @param string $path file/directory path to beggin at
 * @param number $depth number of times to apply dirname(), 2 by default
 * 
 * @todo validate params
 */
function dirname2( $path, $depth = 2 ) {

    for( $d=1 ; $d <= $depth ; $d++ )
        $path = dirname( $path );

    return $path;
}

注意:@todo可能是相关的。

唯一的问题是,如果此函数位于外部包含(例如util.php),则无法使用它来包含此类文件:B

答案 5 :(得分:0)

require_once(dirname(__FILE__) . "/../../functions.php");

答案 6 :(得分:0)

这是一个古老的问题,但是相关的。

使用:

basename(dirname(__DIR__));

仅返回第二个父文件夹名称 - &#34; theme&#34;在这种情况下。

http://php.net/manual/en/function.basename.php