PHPにはディレクトリを取得するための変数や定数が用意されていますが、どれを使えばいいのか分からなくなりませんか?
概要
今回は「example.com」というサイトを例に、ディレクトリ名を取得する変数や定数の値を調査しました。実際の使用例も用意してあります。なお、途中に出てくる dirname() は、引数に指定したファイル・ディレクトリへのパスに対する親ディレクトリのパスを返す関数です。
環境
アクセス先
http://example.com/
http://example.com/knighthawk/
http://example.com/knighthawk/pavehawk.php
ドキュメントルート
/home/mcgee/www/example/public_html/
(/knighthawk/に深い意味はありません。単なるディレクトリ名です。)
一覧
アクセスしたURL | http://example.com/ | http://example.com/knighthawk/ | http://example.com/knighthawk/pavehawk.php |
---|---|---|---|
__FILE__ | /home/mcgee/www/example/public_html/index.php | /home/mcgee/www/example/public_html/knighthawk/index.php | /home/mcgee/www/example/public_html/knighthawk/pavehawk.php |
__DIR__ | /home/mcgee/www/example/public_html | /home/mcgee/www/example/public_html/knighthawk | /home/mcgee/www/example/public_html/knighthawk |
['SERVER_NAME'] | example.com | ||
['DOCUMENT_ROOT'] | /home/mcgee/www/example/public_html | ||
['SCRIPT_FILENAME'] | /home/mcgee/www/example/public_html/index.php | /home/mcgee/www/example/public_html/knighthawk/index.php | /home/mcgee/www/example/public_html/knighthawk/pavehawk.php |
['SCRIPT_NAME'] | /index.php | /knighthawk/index.php | /knighthawk/pavehawk.php |
['REQUEST_URI'] | / | /knighthawk/ | /knighthawk/pavehawk.php |
['PHP_SELF'] | /index.php | /knighthawk/index.php | /knighthawk/pavehawk.php |
項目別
まずはディレクトリ関連の定数です。
__FILE__
ファイルのフルパスとファイル
アクセス先 | 取得できる値 |
---|---|
http://example.com/ | /home/mcgee/www/example/public_html/index.php |
http://example.com/knighthawk/ | /home/mcgee/www/example/public_html/knighthawk/index.php |
http://example.com/knighthawk/pavehawk.php | /home/mcgee/www/example/public_html/knighthawk/pavehawk.php |
__DIR__
ファイルの存在するディレクトリ。dirname(__FILE__) と同じ意味。ルートディレクトリの場合は末尾にスラッシュがつく。
アクセス先 | 取得できる値 |
---|---|
http://example.com/ | /home/mcgee/www/example/public_html |
http://example.com/knighthawk/ | /home/mcgee/www/example/public_html/knighthawk |
http://example.com/knighthawk/pavehawk.php | /home/mcgee/www/example/public_html/knighthawk |
$_SEREVR変数
これはサーバに関する情報が自動で格納される変数(連想配列)です。実際には$_SERVER['PHP_SELF']のように他の連想配列と同じく、キーを指定して使います。
['SERVER_NAME']
現在のスクリプトが実行されているサーバーのホスト名
アクセス先 | 取得できる値 |
---|---|
http://example.com/ | example.com |
http://example.com/knighthawk/ | |
http://example.com/knighthawk/pavehawk.php |
['DOCUMENT_ROOT']
現在実行されているスクリプトが存在するドキュメントルート ディレクトリ
アクセス先 | 取得できる値 |
---|---|
http://example.com/ | /home/mcgee/www/example/public_html |
http://example.com/knighthawk/ | |
http://example.com/knighthawk/pavehawk.php |
['SCRIPT_FILENAME']
現在実行されているスクリプトの絶対パス
アクセス先 | 取得できる値 |
---|---|
http://example.com/ | /home/mcgee/www/example/public_html/index.php |
http://example.com/knighthawk/ | /home/mcgee/www/example/public_html/knighthawk/index.php |
http://example.com/knighthawk/pavehawk.php | /home/mcgee/www/example/public_html/knighthawk/pavehawk.php |
['SCRIPT_NAME']
現在のスクリプトのパス
アクセス先 | 取得できる値 |
---|---|
http://example.com/ | /index.php |
http://example.com/knighthawk/ | /knighthawk/index.php |
http://example.com/knighthawk/pavehawk.php | /knighthawk/pavehawk.php |
['REQUEST_URI']
ページにアクセスするために指定されたURL
アクセス先 | 取得できる値 |
---|---|
http://example.com/ | / |
http://example.com/knighthawk/ | /knighthawk/ |
http://example.com/knighthawk/pavehawk.php | /knighthawk/pavehawk.php |
['PHP_SELF']
現在実行しているスクリプトのファイル名。「?id=60」なども含まれる。
アクセス先 | 取得できる値 |
---|---|
http://example.com/ | /index.php |
http://example.com/knighthawk/ | /knighthawk/index.php |
http://example.com/knighthawk/pavehawk.php | /knighthawk/pavehawk.php |
実例
インクルードされるファイルは
/home/mcgee/www/example/public_html/knighthawk/blackhawk.php
インクルードされるファイルは
/home/mcgee/www/example/public_html/core/seahawk.php
$callbackURLは
example.com/knighthawk/callback.php
まとめ
注意点は
・__FILE__ __DIR__ のアンダーバーは左右2つずつ
・$_SERVERはキーを指定して使う
・取得できる値には末尾のスラッシュ(/)がない場合が多いので、自分でつける必要がある
ですね。
似たような変数・定数が多いですが、この記事を参考に使いこなして、みなさんが素晴らしいPHPアプリケーションを開発してくださる事を願っています。
参考文献
PHP: 自動的に定義される定数 – Manual
PHP: $_SERVER – Manual
PHP: dirname – Manual