本記事では、PHPで絶対パスを取得することができる__FILE__と__DIR__とdirname関数の使い方について解説しています。
ITエンジニア特化の転職サイト!
自社内開発求人に強い【クラウドリンク】
PHPの学習におすすめ参考書
気づけばプロ並みPHP 改訂版–ゼロから作れる人になる!
__FILE__の使い方
__FILE__では、対象ファイルまでの絶対パスを取得してくれます。関数ではないので、引数などの指定は必要ありません。
<?php
echo __DIR__;
?>

実行結果を確認すると、index.phpまでの絶対パスが取得できていることが確認できます。
__DIR__の使い方
__DIR__では、対象ファイルが置かれているディレクトリまでの絶対パスを取得してくれます。__FILE__と同様に関数ではないので、引数などの指定は必要ありません。
<?php
echo __FILE__;
?>

実行結果を確認すると、index.phpが置かれているディレクトリが絶対パスが取得できていることが確認できます。
dirnameの使い方
dirnameでは、__DIR__と同様に対象ファイルが置かれているディレクトリまでの絶対パスを取得してくれます。
__DIR__との違いは、関数であるため引数を指定することが出来ます。dirnameは2つの引数を設定することができ、第一引数にはパスを指定し、第二引数には何個上のディレクトリを対象にするかを指定します。第二引数の初期値は1であり、これは第一引数で指定したパスのディレクトリを指します。
<?php
echo dirname(__FILE__, 2);
?>

実行結果を確認すると、index.phpファイルが置かれているtestディレクトリの一つ上の絶対パスを取得することが出来ました。これはdirnameの第二引数で2を指定しているため、__FILE__で取得したディレクトリの一つ上のディレクトリまでの絶対パスを取得するという意味になります。