3流プログラマのメモ書き

元開発職→社内SE→派遣で営業支援の三流プログラマのIT技術メモ書き。 このメモが忘れっぽい自分とググってきた技術者の役に立ってくれれば幸いです。(jehupc.exblog.jpから移転中)

(PHP)require,includeで相対パスのファイルを指定する場合

今更な話ですが、require , require_once , include , include_once で別ファイルを読み込む時に相対パスを使う時の注意点です。

PHPには、実行したファイルのあるディレクトリがカレントディレクトリになるというルールがあるようです。また、ファイルインクルードの順番ですが、まず指定されたパス→include_path→現在の作業ディレクトリとなるようです。

なので、一旦絶対パスを取得してからファイル名を指定するといいようです。

require_once dirname(__FILE__) .'/util.php' ; //php5.3.0より前のバージョン

require_once __DIR__ .'/util.php' ; //php5.3.0以降のバージョン

参考:

PHPでincludeの時、ファイルパスの指示の仕方。 | WEBデザイン&WEBプログラミング -sei2の日記-

PHP の include, require で相対パスを指定して読み込む場合のメモ - hoge256ブログ

PHP include時のパス解決方法

PHP で 外部ファイルを include したり require する場合は 絶対パスで指定するべきなんだって