質問: *イタリックテキスト*こんにちは。 require_once("../../ファイル名.php"); require_once("../library_01/ファイル名.php"); などのパスの質問です。 /Applications/MAMP/htdocs/lib/util.php このファイルに、勉強中の本のユーザー定義関数が入っています。 ライブラリー/ユーティリティ---という形です /Applications/MAMP/htdocs/ckenSample.php このファイルの中で require_once("lib/util.php"); とすると、util.php が読み込まれ、ユーザ定義関数を問題なく実行できました。 ここで、ckenSample.php を別の階層に移したいのですが、require_once のパスの書き方がわからないのです。 一つ下の階層、たとえば、aaa フォルダーが間に入って、 /Applications/MAMP/htdocs/aaa/ckenSample.php の場合、 require_once("../lib/util.php"); なのでしょうか? 他のファイルで、テストしたのですが、うまく行きませんでした。
回答: `__DIR__`を使うとやりやすいと思います。 ``` aaa/test.php bbb/hoge.php ``` hoge.phpからtest.phpをrequire ``` require_once(__DIR__."/../aaa/test.php"); ``` > > 自動的に定義される定数 > > *DIR* そのファイルの存在するディレクトリ。include の中で使用すると、 インクルードされるファイルの存在するディレクトリを返します。 つまり、これは dirname(*FILE*) と同じ意味です。 ルートディレクトリである場合を除き、ディレクトリ名の末尾にスラッシュはつきません。 > > > ただ、namespaceをきちんとつけたうえでcomposer利用したほうが管理面では良いかなと思います。