[英]Get 2 levels up from dirname( __FILE__)
如何從當前文件返回路徑名,只有 2 個目錄?
因此,如果我當前的文件 URL 正在返回theme/includes/functions.php
。php
我怎樣才能返回“主題/”
目前我正在使用
return dirname(__FILE__)
PHP 5.3+
return dirname(__DIR__);
PHP 5.2 及更低版本
return dirname(dirname(__FILE__));
使用 PHP7 go 通過將第二個參數指定給dirname
來進一步提升目錄樹。 7 之前的版本需要進一步嵌套dirname
。
[ web root ]
/ config.php
[ admin ]
[ profile ]
/ somefile.php
如何在 somefile.php 中包含 config.php? 您需要使用當前 somefile.php 文件中具有 3 個目錄結構的 dirname。
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 服務器,但我不明白為什么它不起作用。
正如@geo 所建議的,這是一個增強的目錄名 function ,它接受具有目錄名搜索深度的第二個參數:
/**
* 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 可能是相關的。
唯一的問題是,如果此 function 位於外部包含(例如 util.php)中,則不能使用它來包含此類文件:B
require_once(dirname(__FILE__) . "/../../functions.php");
這是一個古老的問題,但仍然相關。
利用:
basename(dirname(__DIR__));
只返回第二個父文件夾名稱 - 在這種情況下為“主題”。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.