PHPで今のページのドキュメントルートからの相対パスを自動取得

PHPで現在のページのドキュメントルートからの相対パスを自動で取得したい場合があったので作成。
絶対パスでもいいんだけど相対パスが欲しい場合にどうぞ。

ドキュメントルート直下の場合は . (コロン)のみ、
2つ下の ../.. となる。

完成コード

//ドキュメントルート
$docRoot = ‘/home/hoge/www’;

//docRootからの相対階層数を調べる
$relativeLevel = substr_count(dirname($_SERVER['SCRIPT_FILENAME']), '/') - substr_count($docRoot, '/');

//相対パスの文字列
$relativePath = '';

//ドキュメントルート直下の場合
if ($relativeLevel == 0) {
	$relativePath = '.';
    define(RELATIVE_PATH, '.');
}
//ドキュメントルートより下の階層の場合
else {
	for ($i = 0; $i < $relativeLevel; $i++) {
		$relativePath .= '../';
	}

	//一番後ろのスラッシュを削除
	//$relativePath . '/index.php' のようにパスをスラッシュ込みで記述するため、後ろのスラッシュを削除する
	$relativePath = substr($relativePath, 0, -1);
	define(RELATIVE_PATH, $relativePath);
}

解説

$_SERVER[‘SCRIPT_FILENAME’]で取得した今いるページのパスのスラッシュの数をカウントして相対パスを作成する。
初めに__PAHT__などでドキュメントルートのパスを調べて$docRootへ代入、一番後ろのスラッシュを外し、ここでは /home/hoge/www となる。

$docRoot = ‘/home/hoge/www’;

ドキュメントルート直下の場合は . (コロン)のみとなる

if ($relativeLevel == 0) {
	$relativePath = '.';
    define(RELATIVE_PATH, '.');
}

ドキュメントルートより下の階層はスラッシュの数を数えて相対パスを作成、

for ($i = 0; $i < $relativeLevel; $i++) {
	$relativePath .= '../';
}

//一番後ろのスラッシュを削除
$relativePath = substr($relativePath, 0, -1);
define(RELATIVE_PATH, $relativePath);

最後に define(RELATIVE_PATH, $relativePath); で相対パスを定数にセットする。
バーチャルドメインなどで必ずしもサイトトップがドキュメントルート直下でない時でも便利です。