PHPで相対パスの指定がどうしてもうまくいかない時の対処法についてです。
相対パスの指定が上手にいかず、変だと思いながらも、フルパスを使ってなんとか読み込んでいる方も多いと思います。
No such file or directory
のようなエラーが出ます。
フルパスで指定していると、サーバーを移転する時なんかに不便ですよね。
一つ上のディレクトリ⇒temp⇒a.phpをincludeしたい時には「include_once ‘../temp/a.php’」と書きたくなりますが、エラーが出ることがあります。
実行したファイルのあるディレクトリが常に実行時のカレントディレクトリになる規則がPHPにはあるからです。
hoge256blogというサイトに分かりやすく載っていたのでリンクを貼っておきます。
PHP の include, require で相対パスを指定して読み込む場合のメモ
エラー時:include_once ‘../temp/a.php’;
対処方法:include_once dirname(__FILE__) . ‘/../temp/a.php’;
hoge256さんのおっしゃる通り、dirname(__FILE__) .は常時書いておくのがベターな気がします。
コメント