プログラミング備忘録

忘れない様にメモ

*

dirname(__FILE__)の使い方

   

dirname(__FILE__)は自身がいるディレクトリの絶対パスを返す。

htdocsのPHPディレクトリにいたら、
/Applications/MAMP/htdocs/PHP
が返ってくる。

使い方:
require_onceの場合、以下の問題がある。

test/a.php
test/dir1/b.php
test/dir2/c.php
の三つのファイルがある場合にrequire_onceする場合。
b.phpから「require_once(../dir2/c.php)」問題ない。
しかし上のようにしてc.phpを参照しているb.phpを
a.phpが参照すると、b.phpからrequire_once(../dir2/c.php)」の部分でエラーになる。

なぜか?

require_onceは実行しているファイルからのパスで参照する。
つまり実行ファイルa.phpから参照したb.phpの「require_once(../dir2/c.php)」の部分は、a.phpがある階層から「../dir2/c.php」のパスで探しに行くのでエラーになる。
仮にb.phpに「require_once(dir2/c.php)」と書いてあれば、a.phpからb.phpを参照してもエラーなしにc.phpを参照してくれる。
しかしこれではb.phpを実行した時にc.phpを参照出来ずにエラーになる。

対応策でdirname(__FILE__)を使う。
a.phpには「require_once(dirname(__FILE__).’/dir1/b.php’)」
b.phpには「require_once(dirname(__FILE__).’/../dir2/c.php’)」
結果、絶対パスになり問題なし。
dirname(__FILE__)の最後にスラッシュはつかないので、「’/../dir2/c.php’」のように続くパスの先頭にスラッシュを付ける。

この記事は役に立ちましたか? はい いいえ 0人中0人が役に立ったと言っています。

 - PHP