1

インクルード ファイル自体に別のファイルが含まれていて、それをドット プレフィックスで参照している場合、インクルードに問題があります。たとえば、 inc1.phpinc2.php、およびsubdir/test.phpという 3 つのファイルがあり、その内容は次のとおりです。

サブディレクトリ/test.php:

set_include_path(get_include_path().":../:../.");
require("inc1.php");

inc1.php:

require("./inc2.php");

inc2.php

echo "OK";

ここに示すこのインクルード ツリーは、ストリームを開くことができませんでした: No such file or directoryエラーで失敗します。inc1.php に単純なrequire("inc2.php");が含まれている場合に機能します。、「./」プレフィックスなし。追加した "../。" 動作させる試みとしてインクルードパスに追加しましたが、効果はありませんでした。

「./」プレフィックスを使用してインクルードを実行する以外に、inc1.php と inc2.php が書き込み可能ではなく、subdir/test.php のみを変更できると仮定すると、ここでの解決策は何ですか? test.php 内から inc1.php をどのように含めることができますか?

参考までに、PHP 5.2.9 を使用しています。

4

2 に答える 2

7

そうしない (非常に) やむを得ない理由がない限り、常に次のスタイルの使用を含めます。

include(dirname(__FILE__)."/inc2.php");

それはあらゆる種類の頭痛を救います。

于 2009-08-21T03:26:23.853 に答える