【PHP】現在実行中のスクリプトまでのパスを取得する方法
2018/02/28
今更ではありますが、PHPを使って現在実行中のスクリプトまでのパスを取得する方法を備忘録としてポストします。
PHPでスクリプトまでのパスを取得する
パスの種類
パスを取得する方法はいくつかあるのですが、まずはパスの種類から。
パスの種類は「絶対パス」「相対パス」「フルパス」と3種あり、それぞれに使い分ける必要有。
簡単にまとめると以下のようになります。
絶対パス
一般的には http から始まるパス(例1)。他サーバへリンクする場合に使用。
WEB制作者が使う絶対パスは「/」から始まるパスのこと(例2)ですが、この場合はサーバの「公開領域」の最上位、という意味合いとなります。
例1:https://nodoame.net/
例2:/img/php.png
相対パス
参照しているファイルから見たパス。画像やスクリプトを指定する場合などに用いる(例3, 例4)。
例3:./img/php.png
(index.htmlから)同階層にあるimgディレクトリ下のphp.pngファイルを指定する相対パス。
例4:../index.html
逆に、php.png から見たindex.html場合の相対パス。一階層上にあるindex.htmlを指定しています。
フルパス
サーバ内、Apache の DocumentRoot (ドキュメントルート)からのパス(例5)。
よくあるタイプの WEB サーバの場合は以下のようになります。
例5:/var/www/toogie/public_html/
「public_html」を公開領域と設定された場合、いわゆるドキュメントルートと称される FTP でファイルをアップロードする場合に使用するディレクトリとなります。
取得方法
では取得する方法。
「__FILE__」でフルパスを取得
PHPでは「__FILE__」という特殊な関数が用意されているので使用してみます。
1 |
echo __FILE__; |
◆Windowsサーバの場合
E:\website_data\toogie-develop\toogie\www\blog_sample\php\path\index.php
◆UNIXサーバの場合
/var/www/toogie-develop/toogie/www/blog_sample/php/path/index.php
ディレクトリパス
1 |
echo dirname( __FILE__); |
◆Windowsサーバの場合
E:\website_data\TOOGIE-DEVELOP\toogie\www\blog_sample\php\path
◆UNIXサーバの場合
/var/www/toogie-develop/toogie/www/blog_sample/php/path
※最後のスラッシュはつきません
スクリプト名
1 |
echo basename(__FILE__); |
◆Windowsサーバの場合
index.php
◆UNIXサーバの場合
index.php
以上のようになります。
発展編
取得したパスを利用し、そのパスに存在するディレクトリの一覧を取得する方法はこちらのポストで紹介しています。