0

関数インクルードの 1 つで次のエラーが発生します。

require(../htmlpurifier/library/HTMLPurifier.auto.php) [function.require]: failed to open stream: No such file or directory

パスをコーディングすれば、この問題を修正できます

./htmlpurifier/library/HTMLPurifier.auto.php

しかし、インクルードの目的を損なうたびに関数インクルード内のパスを再コーディングすることなく、Web サイトのさまざまなレベルのフォルダーにインクルード ファイルを表示したいと考えています。毎回パスを再コーディングすることなく、これを機能させる方法はありますか? フルパスを含める方法はありますか?

4

4 に答える 4

0

この .php ファイルへのパスをスクリプトの構成変数として構成するのはどうですか? おそらく、すべてのページにいくつかの共通関数ライブラリをロードすることになるので、次のようにします。

$PATH_TO_PURIFIER = 'C:\this\that\whatever\HTMLPurifier.auto.php';

その共通ファイルで、次のことができます

include('commonstuff.php');
include($PATH_TO_PURIFIER);

commonstuff.php が PHP の include_path のどこかにある限り、他の場所でパスを動的に計算しようとするよりも、この方法で行う方がはるかに信頼性が高くなります。特に、ディレクトリ構造が変更される可能性がある場合は、計算されたパスが無効になり、すべての PHP ファイルを再度変更する必要があります。

于 2010-08-28T15:22:22.733 に答える
0

間違ったパスを使用しています。
この 2 つの行を組み合わせて、違いを感じてください。

../htmlpurifier/library/HTMLPurifier.auto.php
./htmlpurifier/library/HTMLPurifier.auto.php

これは 2 つの異なるパスであり、同時に機能することはありません。後者は現在のディレクトリを指し、最初のものは 1 つ上のレベルを指します。

しかし、関数内のパスを再コーディングせずに、Web サイトのさまざまなレベルのフォルダーにインクルード ファイルを表示したい

それは賢明な欲求です。どうぞ:

require $_SERVER['DOCUMENT_ROOT'].'/htmlpurifier/library/HTMLPurifier.auto.php';

(この htmlpurifier フォルダがドキュメント ルートにあると仮定します)

于 2010-08-28T10:10:10.583 に答える
0

これを試して:

require realpath(dirname(__FILE__) . '/htmlpurifier/library/HTMLPurifier.auto.php');

そうすれば、現在のファイルのパスに相対的なファイルを常に含めることができます。

于 2010-08-28T10:04:04.680 に答える
0

これを試して

require (dirname(__FILE__).'/../htmlpurifier/library/HTMLPurifier.auto.php');
于 2010-08-28T12:45:50.897 に答える