如何从当前文件返回其路径名,仅返回2个目录?
因此,如果我当前的文件URL返回theme/includes/functions.php
如何返回“theme /”?
目前我正在使用
return dirname(__FILE__)
PHP 5.3+
return dirname(__DIR__);
PHP 5.2 及更低版本
return dirname(dirname(__FILE__));
通过指定第二个参数到 dirname
,PHP7可以在目录树中进一步向上移动。在版本7之前的版本中,需要进一步嵌套 dirname
。
[ web root ]
/ config.php
[ admin ]
[ profile ]
/ somefile.php
如何在somefile.php中包含config.php?您需要使用dirname和当前somefile.php文件的三个目录结构。
require_once dirname(dirname(dirname(__FILE__))) . '/config.php';
dirname(dirname(dirname(__FILE__))) . '/config.php'; # 3 directories up to current file
\..\..\
多次移动目录级别。
$credentials = require __DIR__ . '\..\App\Database\config\file.php';
相当于:
$credentials = dirname(__DIR__) . '\App\Database\config\file.php';
好处是避免了嵌套dirname的情况,例如:
dirname(dirname(dirname(__DIR__))
请注意,这在IIS服务器上进行了测试-不确定Linux服务器是否有效,但我认为它应该有效。realpath(__DIR__ . '/../../')
,向上跳两个级别。 - puiu根据@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;
}
require_once(dirname(__FILE__) . "/../../functions.php");
这是一个老问题,但仍然相关。
用途:
basename(dirname(__DIR__));
返回第二个父文件夹的名称 - 在这种情况下是“theme”。
dirname(dirname(__DIR__));
,它返回从 / 到第二个父文件夹的完整路径) - codywohlers
dirname(__FILE__).'/../';
的主要优点是消除 DIRECTORY_SEPARATOR 可能带来的不一致性吗? - Patrickdirname(__FILE__, 3);
会很方便。希望dirname
函数可以有第二个参数$levels
来指定层级数。 :-) - Geodirname()
函数有第二个参数levels
。请参考http://php.net/manual/en/function.dirname.php。 - rocknrollcanneverdie