PHP でルートディレクトリパスを見つける
-
PHP で
__DIR__
事前定義された定数を使用してファイルのディレクトリのパスを検索する -
PHP で
dirname()
関数を使用してプロジェクトのルートディレクトリのパスを検索する -
PHP で
$_SERVER['DOCUMENT_ROOT']
を使用してファイルのドキュメントルートディレクトリを検索する
PHP プロジェクトのルートディレクトリのパスを見つけるためのさまざまな方法を紹介します。
PHP で __DIR__
事前定義された定数を使用してファイルのディレクトリのパスを検索する
PHP には、さまざまな機能を実現するために使用できる事前定義された定数があります。__DIR__
は、ルートディレクトリから現在のファイルの完全なファイルパスを返す 1つの魔法の定数です。これは、ファイルのディレクトリを返すことを意味します。dirname(__FILE__)
も同じ目的で使用できます。
プロジェクトのルートディレクトリである project
フォルダがあるとします。project
フォルダには、次のファイルパス/var/www/HTML/project
があります。project
フォルダー内には、index.php
ファイルと別のフォルダーmaster
があります。master
フォルダー内には、login.php
と register.php
の 2つの PHP ファイルがあります。
project
├── index.php
└── master
├── login.php
└── register.php
現在、login.php
に取り組んでいるとします。このようなファイル構造では、login.php
ファイルの __DIR__
定数を使用してディレクトリのパスを取得できます。echo
関数を使用して定数を出力できます。
サンプルコード:
<?php
echo __DIR__;
?>
出力:
/var/www/html/project/master
PHP で dirname()
関数を使用してプロジェクトのルートディレクトリのパスを検索する
関数 dirname(__FILE__)
は __DIR__
に似ています。この関数を使用して、ファイルのディレクトリのパスを見つけることができます。dirname()
関数を使用して、ファイルパスの上位レベルに移動することもできます。関数の最初のパラメーターはファイルのパスであり、__FILE__
定数で示されます。2 番目のパラメーターは、レベルと呼ばれる整数です。レベルを設定して、ファイルパスでレベルアップするように関数を指示できます。レベルのデフォルト値は 1
です。レベルを上げると、関数は 1 レベル上のファイルパスを取得します。したがって、この関数を使用して、PHP でプロジェクトのルートディレクトリの正確なファイルパスを見つけることができます。
たとえば、ファイル構造を最初の方法と見なすことができます。ファイル login.php
から作業して、レベル 2
および __FILE__
定数をパラメーターとして持つ dirname()
関数を使用できます。次に、作業ディレクトリの正確なファイルパスを取得できます。したがって、ファイルパスを上下に移動するという選択に応じて、レベルを変更できます。このようにして、PHP でプロジェクトのルートディレクトリのパスを見つけることができます。
サンプルコード:
<?php
echo dirname(__FILE__,2);
?>
出力:
/var/www/html/project
PHP で $_SERVER['DOCUMENT_ROOT']
を使用してファイルのドキュメントルートディレクトリを検索する
$_SERVER[]
配列と DOCUMENT_ROOT
インデックスを使用して、現在実行中のスクリプトのドキュメントルートディレクトリを見つけることができます。ドキュメントのルートディレクトリの完全なパスを返します。サーバーの構成ファイルで定義されています。上記のファイル構造の場合、$_SERVER['DOCUMENT_ROOT']
を echo
関数で出力して、ファイル login.php
のドキュメントルートディレクトリを見つけることができます。
以下の出力に示すように、パス html
が login.php
ファイルのドキュメントルートディレクトリであることがわかりました。ルートディレクトリのファイルパスも確認できます。
サンプルコード:
<?php
echo $_SERVER['DOCUMENT_ROOT'];
?>
出力:
/var/www/html
Subodh is a proactive software engineer, specialized in fintech industry and a writer who loves to express his software development learnings and set of skills through blogs and articles.
LinkedIn