本記事では、PHPで絶対パスを取得することができる__FILE__と__DIR__とdirname関数の使い方について解説しています。
PHPの学習におすすめ書籍
独習PHP 第4版

メリット
- PHPの基本構文からクラス・データベース連携・セキュリティまで学べる
- PHPによるWebアプリ開発の基礎・基本テクニックを学べる


Amazon Kindle Unlimitedに登録すると、月額980円で読み放題だからオススメだよ!



初回30日間は無料だから、まだ登録したことのない人はぜひ試してみてね!
全プログラマー必見!
変数名/関数名にもう悩まない!
変数名/関数名にもう悩まない!
リーダブルコード


メリット
- 美しいコードが書けるが自然と書けるようになる
- 他の開発者が理解しやすいコードになる
著:Dustin Boswell, 著:Trevor Foucher, 解説:須藤 功平, 翻訳:角 征典
¥2,640 (2023/07/23 02:48時点 | Amazon調べ)


目次
__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__で取得したディレクトリの一つ上のディレクトリまでの絶対パスを取得するという意味になります。