現在のファイルからパス名を返すにはどうすればよいですか?
したがって、現在のファイルURLがtheme/includes/functions.php
を返している場合
「テーマ/」を返すにはどうすればよいですか
現在使用しています
return dirname(__FILE__)
PHP 7
return dirname(__FILE__, 2);
PHP 4以降
return dirname(dirname(__FILE__));
PHP7では、levelsパラメーターを指定することにより、ディレクトリツリーをさらに上に移動できますが、7より前のPHPでは、dirname
関数をさらにネストする必要があります。
[ web root ]
/ config.php
[ admin ]
[ profile ]
/ somefile.php
Config.phpをsomefile.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が示唆するように、dirname検索の深さで2番目のパラメータを受け入れる拡張dirname関数は次のとおりです。
/**
* Applies dirname() multiple times.
* @author Jorge Orpinel <[email protected]>
*
* @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
これは古い質問ですが、まだ関連があります。
使用する:
basename(dirname(__DIR__));
2番目の親フォルダー名(この場合は「テーマ」)のみを返します。
require_once(dirname(__FILE__) . "/../../functions.php");