【有益】PHPで現在のディレクトリを取得する5つの方法

【有益】PHPで現在のディレクトリを取得する5つの方法

PHPを用いて現在のディレクトリを取得する方法を説明する図PHP
この記事は約8分で読めます。

 

【サイト内のコードはご自由に個人利用・商用利用いただけます】

このサービスは複数のSSPによる協力の下、運営されています。

この記事では、プログラムの基礎知識を前提に話を進めています。

説明のためのコードや、サンプルコードもありますので、もちろん初心者でも理解できるように表現してあります。

基本的な知識があればカスタムコードを使って機能追加、目的を達成できるように作ってあります。

※この記事は、一般的にプロフェッショナルの指標とされる『実務経験10,000時間以上』を凌駕する現役のプログラマチームによって監修されています。

サイト内のコードを共有する場合は、参照元として引用して下さいますと幸いです

※Japanシーモアは、常に解説内容のわかりやすさや記事の品質に注力しております。不具合、分かりにくい説明や不適切な表現、動かないコードなど気になることがございましたら、記事の品質向上の為にお問い合わせフォームにてご共有いただけますと幸いです。
(送信された情報は、プライバシーポリシーのもと、厳正に取扱い、処分させていただきます。)

はじめに

この記事を読むことで、あなたはPHPで現在のディレクトリを取得する5つの方法を学べるでしょう。

これにより、ウェブサイトの構築やデータ管理、エラー対策など、PHPのさまざまなシチュエーションで役立つ技術を手に入れることができます。

特に、PHP初心者の方でも理解しやすいように、基本的な使い方から詳細な知識までを段階的に解説しています。

●PHPとは

PHPは、ウェブサイトのサーバーサイドで動作するスクリプト言語の一つです。

その特徴としては、直感的で学びやすい文法、そして動的なウェブページを簡単に作成できる機能が挙げられます。

HTML内に埋め込むことが可能であり、データベースとの連携も容易なため、様々なウェブサービスに広く採用されています。

○PHPの基本

PHPの基本的な機能を理解するためには、まずスクリプトがどのように動作するのかを把握する必要があります。

PHPは、ウェブサーバー上で動作し、ユーザーからのリクエスト(例えばウェブページの閲覧)に対してレスポンス(HTMLなどの出力)を返します。

このとき、PHPスクリプトはデータベースから情報を取得したり、ユーザーからの入力を処理したりすることができます。

●現在のディレクトリとは

現在のディレクトリとは、その名の通り現在操作しているディレクトリのことを指します。

例えば、あるPHPスクリプトがサーバー上の特定のディレクトリ内で動作している場合、そのディレクトリが「現在のディレクトリ」となります。

現在のディレクトリを知ることは、ファイルの読み書きやディレクトリの探索など、多くの操作において重要となります。

●PHPでの現在のディレクトリ取得方法

PHPには、現在のディレクトリを取得するための機能がいくつか提供されています。

それぞれには特性と利点があり、使用する状況によって適切なものを選ぶことが大切です。

ここでは、5つの主要な方法を紹介します。

○サンプルコード1:__FILE__を使用した方法

まず最初に紹介するのは、マジック定数の一つである__FILE__を使用した方法です。

__FILE__は現在実行中のスクリプトのフルパス(ディレクトリパス+ファイル名)を取得することができます。

そのため、dirname()関数と組み合わせることで現在のディレクトリのパスを取得することが可能です。

$current_directory = dirname(__FILE__);
echo $current_directory;

このコードでは、__FILE__を使って現在実行中のスクリプトのフルパスを取得し、それをdirname()関数に渡すことでディレクトリのパスを取得しています。

そして、そのパスを出力しています。

○サンプルコード2:$_SERVERを使用した方法

次に紹介するのは、スーパーグローバル変数$_SERVERを使用した方法です。

$_SERVERは、ヘッダ、パス、スクリプトの場所などのサーバー情報を含んでいます。

その中の'SCRIPT_FILENAME'を使用することで現在実行中のスクリプトのパスを取得することができます。

$current_directory = dirname($_SERVER['SCRIPT_FILENAME']);
echo $current_directory;

このコードでは、$_SERVER['SCRIPT_FILENAME']を使って現在実行中のスクリプトのフルパスを取得し、それをdirname()関数に渡すことでディレクトリのパスを取得しています。

そして、そのパスを出力しています。

○サンプルコード3:getcwd()を使用した方法

PHPにはgetcwd()という組み込み関数が存在します。

これは、現在の作業ディレクトリのフルパスを取得する関数です。

作業ディレクトリとは、PHPスクリプトが実行される際の基準となるディレクトリのことを指します。

$current_directory = getcwd();
echo $current_directory;

このコードでは、getcwd()関数を使って現在の作業ディレクトリを取得し、その結果を出力しています。

PHPスクリプトがどのディレクトリで実行されているのかを確認する際には、このgetcwd()関数が非常に役立ちます。

○サンプルコード4:dirname()を使用した方法

次に、dirname()関数を使用した方法を紹介します。

この関数は、パスのうち「ディレクトリ部分」を返します。

これを用いることで、現在のスクリプトが存在するディレクトリを取得することが可能です。

$current_directory = dirname(__DIR__);
echo $current_directory;

このコードでは、マジック定数__DIR__を使って現在のスクリプトが存在するディレクトリのフルパスを取得し、そのディレクトリパスをdirname()関数に渡すことで、親ディレクトリのパスを取得しています。

その結果を出力しています。

○サンプルコード5:realpath()を使用した方法

最後に、realpath()関数を使用した方法を紹介します。

realpath()関数は、渡されたパスを絶対パスに変換し、そのパスが実際に存在するときにそのフルパスを返します。

$current_directory = realpath('.');
echo $current_directory;

このコードでは、realpath()関数に.(現在のディレクトリ)を渡すことで、現在のディレクトリのフルパスを取得しています。

そして、そのパスを出力しています。

●それぞれの方法の適用状況

これら5つの方法は、それぞれ異なる状況で使用します。

例えば、現在のスクリプトファイルのパスを知りたいときには__FILE__を、スクリプトが実行されているディレクトリのパスを知りたいときにはgetcwd()を使用することが一般的です。

また、realpath()は、パスの解決やファイルの存在チェックなどに用いられます。

重要な点として、これらの方法が返すパスは、相対パスであることもあれば、絶対パスであることもあるということを覚えておきましょう。

必要に応じて適切な方法を選択して使用することが肝心です。

●現在のディレクトリ取得の応用例

現在のディレクトリを取得することで、さまざまな操作が可能となります。

現在のディレクトリ取得を利用した具体的な応用例を2つ紹介します。

○サンプルコード6:ファイルの読み書き

現在のディレクトリを取得することで、そのディレクトリ内のファイルを簡単に読み書きすることが可能です。

現在のディレクトリにあるsample.txtというファイルの内容を読み取り、出力する例を紹介します。

$current_directory = getcwd();
$file_path = $current_directory . '/sample.txt';
$file_content = file_get_contents($file_path);
echo $file_content;

このコードでは、まずgetcwd()を使って現在のディレクトリを取得し、その後でfile_get_contents()関数を使ってファイルの内容を読み取り、それを出力しています。

○サンプルコード7:ディレクトリの探索

現在のディレクトリを起点に、ディレクトリ内のファイルやサブディレクトリを探索することもできます。

現在のディレクトリとそのサブディレクトリ内の全てのファイルを表示する例を紹介します。

$current_directory = getcwd();
$files = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($current_directory));
foreach($files as $file) {
    echo $file->getPathname() . "\n";
}

このコードでは、まずgetcwd()を使って現在のディレクトリを取得し、その後でRecursiveDirectoryIteratorRecursiveIteratorIteratorを使ってディレクトリ内の全てのファイルを探索し、それぞれのファイルのパスを出力しています。

●注意点と対処法

現在のディレクトリを取得する上での注意点として、次の2点が挙げられます。

  1. スクリプトがサブディレクトリ内から呼び出される場合、getcwd()はそのサブディレクトリを返すことがあります。
    この場合、スクリプトが存在するディレクトリを取得したい場合は、__DIR__を使用すると良いでしょう。
  2. realpath()は、指定されたパスが存在しない場合、FALSEを返す点に注意が必要です。
    このため、realpath()を使用する場合は、パスが実在することを確認するか、FALSEが返された場合の処理を追加すると良いでしょう。

以上のように、それぞれの方法には一長一短があります。

現在のディレクトリを取得する際には、目的に最も適した方法を選択し、その特性と制限を理解して使用しましょう。

まとめ

この記事では、PHPで現在のディレクトリを取得する5つの方法について解説しました。

それぞれの方法が提供する情報と、その利用シーンを理解することで、より効率的なコードを書くことができるでしょう。

また、現在のディレクトリ取得を利用したファイルの読み書きやディレクトリ探索の例を紹介しました。

これらの技術を使って、PHPでの開発をよりスムーズに進めてください。