PHP のインクルード パスに問題があり、何が問題なのか理解できません。まず、私のファイル/ディレクトリ構造をお見せしたいと思います:
ファイル/ディレクトリ構造
|index.php
|foo/
|baz.php
|bar.inc.php
|asdf/
|qwerty.inc.php
/index.php:
include('foo/baz.php');
/foo/baz.php:
include('bar.inc.php');
include('../asdf/qwerty.inc.php')
.inc.php
-filesの内容はここでは関係ありません。
問題は次のとおりです。
/foo/baz.php
直接呼び出すと、2 つのインクルードが正常に機能します。しかし、 を呼び出す/index.php
と、最初のインクルードは機能し、2 番目のインクルードは失敗します。何故ですか?
最初のパスはインクルード時に明らかに変換されますが、2 番目のパスはそうではありません。それは前の と関係があることが../
わかりましたが、これを解決する方法がわかりません。これはおそらくPHPの安全性/構成の問題ですか?
ちなみに、エラー出力は次のとおりです。
Warning: include(../asdf/qwery.inc.php): failed to open stream:
No such file or directory in /foo/baz.php