phpでrequire_onceで相対パスを使って読み込むときにエラーになった。
そのときに色々と調べてみると、
PHPでは、「実行したファイルのあるディレクトリが常に実行時のカレントディレクトリになる」っていう規則があるためエラーとなるらしい。
さらに、この問題は、実行ファイルのディレクトリではなく、参照しているファイルのディレクトリを基にパスを取得することで回避することができるので、その方法をメモしておく。
回避方法は、dirname(__FILE__)を使うことである。
dirname(__FILE__)は、実行中の自分自身へのパスを返すので、ここからの相対パスを指定すればよい。
(パスの最後に/は付かないので、要注意。)
<?php require_once(dirname(__FILE__)."/drop.php"); //現在のディレクトリにあるdrop.phpを読み込む require_once(dirname(__FILE__)."/down/image.php"); //現在のディレクトリの下にあるdownディレクトにあるimage.phpを読み込む