PHPで開発をすすめていると、PHPファイルの場所を知りたい場合もあると思います。
ftp転送をするためにディレクトリを知りたい場合などもあるでしょう。
本日はそんな悩みを解決するために以下の内容でお話をしたいと思います。
【基本】ディレクトリの基本
【実践】ディレクトリを取得
【応用】様々なパスの取得
わかりやすく解説しますので、最後まで読んで頂けると幸いです。
ディレクトリについて
まず、ディレクトリの場所を表すディレクトリパスの種類についておさらいしましょう。
表示方法は種類がありますので、自分が取得したいパスの種類を明確にしておきましょう。
絶対パス
例えばOSがWindowsの場合以下のような表示になります。
C:xampphtdocs
linux系の場合は以下のような表示になります。
/var/lib/mysql
これらは絶対パスと呼ばれるものです。
絶対パスは、最上位のディレクトリから表示したパスです。
Windowsの場合は【ドライブ名】から、Linuxの場合は【/】から始まります。
相対パス
参照している場所から見て、どこにあるのかを示すパスを相対パスと言います。
Windowsで、現在いるフォルダ(C:xampphtdocs)から、(C:xampptest.php)一つ上の階層のファイルを示す場合は以下です。
..xampptest.php
linux系で、現在いるフォルダ(/var/lib/mysql)から、(/var/lib/test.php)一つ上の階層のファイルを示す場合は以下です。
../lib/mysql
一つ上の階層は【..】で表します。
同階層の場合は【.】で表します。
フルパス
Webサーバ(Apache)などのドキュメントルートを表します。
ドキュメントルートは、Webサーバの設定によって変わります。
表示としては、絶対パスと同じで最上位のディレクトリからのパスが表示されます。
現在のディレクトリ名を取得
それでは、現在のディレクトリ名を取得する方法を解説していきます。
get_dir.phpを以下のように作成します。
<?php $get_dir = __FILE__; // ① echo $get_dir . "<br />";// ② $get_dir_path = dirname($get_dir); // ③ echo $get_dir_path; // ④
※筆者の環境はWindowsで、C:xampphtdocs配下にget_dir.phpを作成しました。
①__FILE__で、実行しているPHPファイルの、ファイル名を含めたパスを取得します。
②画面に①で取得したパスを表示させます。
③dirnameで①で取得したパスから、ファイル名だけ削除します。
④画面にパスを表示させます。
■画面表示結果
現在のディレクトリパスだけを表示させる事ができました。
他にも、getcwd関数を使う方法もあります。
get_dir.phpを以下のように変更します。
<?php $get_dir = __FILE__; // ① echo $get_dir . "<br />";// ② $get_dir_path = dirname($get_dir); // ③ echo $get_dir_path. "<br />"; // ④ echo getcwd();// ⑤
⑤getcwdの結果を画面に出力するように修正します。
■画面表示結果
④で表示している内容と同じく、現在のディレクトリパスのみ表示されている事が分かります。
色々なパスの取得
それでは最後にディレクトリのパス以外のパスを取得する方法をお話します。
ファイル名のみを取得
拡張子を外したファイル名のみ取得
相対パスから現在のディレクトリを取得
get_dir.phpを以下のように変更します。
※表示数が多くなったので、表示列に番号を振りました。
<?php $get_dir = __FILE__; // ① echo "②". $get_dir . "<br />";// ② $get_dir_path = dirname($get_dir); // ③ echo "④". $get_dir_path. "<br />"; // ④ echo "⑤". getcwd(). "<br />"; // ⑤ echo "⑥". pathinfo($get_dir, PATHINFO_BASENAME). "<br />"; // ⑥ echo "⑦". pathinfo($get_dir, PATHINFO_FILENAME). "<br />"; // ⑦ echo "⑧". dirname(realpath("./get_dir.php")). "<br />"; // ⑧ echo "⑨". realpath("./get_dir.php");// ⑨
⑥ファイル名のみを取得する場合は、pathinfo関数を使って取得します。
第一引数にパス情報、第二引数に、PATHINFO_DIRNAME、PATHINFO_BASENAME、PATHINFO_EXTENSION、PATHINFO_FILENAMEの4つのいずれかを指定します。
ファイル名のみの場合はPATHINFO_BASENAMEを第二引数に指定します。
⑦ファイル名のみを取得する場合も、pathinfo関数を使って取得します。
ファイル名のみの場合はPATHINFO_FILENAMEを第二引数に指定します。
⑧相対パスから現在のディレクトリを取得する事も出来ます。
まず、realpath関数に相対パスを渡して全体のパスを取得します。
そしてdirname関数を使って、親の全パスを取得するのです。
⑨realpath関数で取得したパスも表示してみました。
■画面表示結果
まとめ
今回はPHPで現在のディレクトリ情報を取得できる方法を解説しました。
取得できるディレクトリ情報にも種類があります。
自分がどの情報が必要なのかを明確にして最適な方法で取得してください。
それでは、また。