インクルードファイルに別のファイルが含まれていてもドットプレフィックスが付いている場合、インクルードに問題があります。例えば、3つのファイルがあります - inc1.php、inc2.php、およびSUBDIR/test.phpを、その内容がある -PHPインクルードパス - "./"接頭辞で参照されるファイルがインクルードされない場合
サブディレクトリ/ test.phpを:
set_include_path(get_include_path().":../:../.");
require("inc1.php");
inc1.php:
require("./inc2.php");
inc2.php
echo "OK";
このツリーは、がストリームを開くことに失敗して失敗します。このようなファイルまたはディレクトリはありません。エラー。 inc1.phpに単純なものが含まれている場合に動作します。require( "inc2.php");、接頭辞「./」は付いていません。追加した "../。"それを動作させる試みとしてインクルードパスに追加しましたが、それは効果がありませんでした。
"./"接頭辞付きのインクルード以外は、inc1.phpとinc2.phpが書き込み可能でないと仮定した場合の解決策は何ですか?subdir/test.phpのみ変更できますか?あなたはまだtest.php内からinc1.phpを含めることができますか?
参考までに、PHP 5.2.9を使用しています。
include(dirname(__FILE__)."/inc2.php");
それは頭痛のすべての方法を保存します。
... PHP 5.3には 'dirname(__ FILE __)'と同じ '__DIR__'という名前のマジック定数もあります。 –
私はまだPHP4を使用している人を知っています。したがって、私は下位互換性のために最新かつ最高の定数を使用しない方が良いですが、あなたは正しいです。 –
私はこれをさまざまなスクリプトで使用しようとしています。 Wordpressは常にその慣習に従わない。したがって、taht inc1.phpとinc2.php *の前提は変更できません:)私はtest.phpを編集するだけの解決策が必要です。 – Tristan