PHP 相対パスがうまく行かない時に使える絶対パス表示

相対パスの落とし穴

PHPでrequireなどで 外部ファイルを読み込んだりすることがあると思います。 この時、もちろん相対パスを使ってファイルを取得することができるのですが、 何も考えずに相対パスを使っているとファイルがみつかりませんと言われることがあります。

PHPでは相対パスの起点は呼び出し元のファイルのディレクトリからのパスになります。

つまり相対パスを書いているファイルからの相対パスではなく、そのファイルの実行元からの相対パスを書く必要があります。呼び出し元が2つの異なるディレクトリにあるファイルだった場合、相対パスはうまく機能しません。ここで導入できるのが絶対パスです。

絶対パスの書き方

絶対パスを書くには

dirname(__FILE__) . '相対パス'

が使えます。__FILE__ はPHPにあらかじめ用意された定数でPHPファイルのフルパスとファイル名が格納されています。dirname(string $path)は$pathの親ディレクトリを返します。 またPHP5.3からはdirname(__FILE__) と同じ意味を示す__DIR__ も追加されたのでこちらをつかうといいと思います。