プロが教える店舗&オフィスのセキュリティ対策術

ずっと困ってます。よろしくお願いします。

読み込む大元のファイル名がindexだとして、その中にrequireを書くとします。
そこからrequireするファイルはindexと同階層にあるaフォルダにあるreq1.phpとします。
さらにreq1.phpからrequireするファイルがあり、同階層(aフォルダ内)にあるreq2.phpとします。
req2.phpはなぜかindexと同階層と、aフォルダ内の、計2カ所に同名の同じファイルがあるとします。

コードを書くと、
index内でrequire_once('a/req1.php');
req1.php内でrequire_once(dirname(__FILE__).'/req2.php');
としています。
この場合、読み込まれるreq2は、req1と同階層にあるものではなく、indexと同階層のものが読み込まれてしまいます。また、indexと同階層のreq2を消しておけば、req1と同階層に置いてあるreq2が読み込まれます。

この辺の挙動が、なぜこうなるのかを説明してください。

特に、
1.dirnameとの関係について
2.別階層に同名ファイルが複数存在の有無に関係なく、とにかくrequireする階層を確実に1つだけに限定する方法について(dirnameではうまくいかないような気がします)

の2点は詳しく知りたいです。

よろしくお願いします。

A 回答 (1件)

お書きの通りの状況であれば、常に a/req2.php が読まれるはずです。


どこかに何らかの勘違いがあると思われます。もう一度見直しましょう。

なお、本筋とは多分関係ないですが、dirname(__FILE__) は、__DIR__ と書けます。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!