私は次のファイル構造を持っています:
rootDIR dir1 subdir1 file0.php file1.php dir2 file2.php file3.php file4.php
file1.php
は、次のようにdir2のfile3とfile4を必要とします。
require('../../dir2/file3.php')
file2.php
が必要file1.php
このような :
require('../dir1/subdir1/file1.php')
しかし、その後file1でrequireはfile3とfile4を開くことができません(おそらくパスの相対的性のため)
しかし、理由は何ですか、file2.php
そう file1.php
適切にfile3とfile4が必要
次のように、パスの前にdirname(__FILE__)
を追加してみてください。
require(dirname(__FILE__).'/../../dir2/file3.php');
ルートディレクトリから始まるファイルを含める必要があります
相対パスの場合、dirname(__FILE__)
ではなく__DIR__
を直接使用できます( PHP 5.3.0以上)を使用している場合 ):
require(__DIR__.'/../../dir2/file3.php');
パスの先頭に引用符で囲んで追加のスラッシュを忘れずに追加してください。
見る:
ここでの適切なアドバイスは、Webアプリで「../../」相対パスなどを絶対に使用しないことです。読みづらく、メンテナンスが大変です。
あなたが証明できるように。何を指しているのかを知るのは非常に困難です。
アプリケーションまたはその一部のフォルダーレベルを変更する必要がある場合。それは完全にエラーを起こしやすく、デバッグするのが恐ろしい何かを壊す可能性があります。
代わりに、メインパスのbootstrap=)ファイルにいくつかの定数をdefine
してから、次を使用します。
require(MY_DIR.'/dir2/file3.php');
そこからアプリを移動するのは、MY_DIR定数を1つのファイルに置き換えるのと同じくらい簡単です。
相対パスに頼るのではなく、常に$_SERVER['DOCUMENT_ROOT']
を有効な開始点として使用することもできます。ちょうど別のオプション。
require($_SERVER['DOCUMENT_ROOT'].'/wp-load.php');