PHP で Web アプリを作成していたところ、奇妙な状況に遭遇しました。私の問題を説明するために、次の構造の Web アプリを考えてみましょう。
/
index.php
f1/
f1.php
f2/
f2.php
これらのファイルの内容:
index.php:
<?php require_once("f1/f1.php"); ?>
f1.php:
<?php require_once("../f2/f2.php"); ?>
f2.php: 空白
ブラウザで index.php を開こうとすると、次のエラーが表示されます。
Warning: require_once(../f2/f2.php) [function.require-once]:
failed to open stream: No such file or directory in /var/www/reqtest/f1/f1.php on line 2
Fatal error: require_once() [function.require]:
Failed opening required '../f2/f2.php' (include_path='.:/usr/share/php:/usr/share/pear') in /var/www/reqtest/f1/f1.php on line 2
私が見逃している明らかなものはありますか?インクルードパスはPHPでどのように機能しますか?
この質問をする前に、実験して調べようとしました。次のように、別のテストを設定しました。
/
index.php
f1/
f1.php
f2.php
index.php:
<?php require_once("f1/f1.php"); ?>
f1.php:
<?php require_once("f2.php"); ?>
f2.php: 空白
驚いたことに (そして完全に混乱していました)、これでうまくいきました。
では、パス解決の背後にある秘密は何ですか?
PS私はこの質問を見ましたが、ここで述べた2番目のケースにはまだ答えていません。