0

list.xmlサイトのルートにある名前の XML ファイルがあります。simplexml_load_file()サイトの各ページにロードしたい。

テンプレートファイルで次のコードを試しました:

if ($level == 1) {
    $xml = simplexml_load_file('list.xml');
} else {
    $xml = simplexml_load_file('../list.xml');
}

変数 $level = 1 は、ルート レベルのページに設定されます。残りのページはすべて 1 レベルの深さであり、$level は設定されておらず、これらのページには相対パス '../list.xml' を使用する必要があります。

ルート レベルのページにアクセスすると、サイトは正しく読み込まれますが、1 レベル深いページでは次のエラーが返されます。

PHP 警告: simplexml_load_file(): I/O 警告: 外部エンティティ "list.xml" の読み込みに失敗しました

相対パスが正しいことを確認しました。上記のコードの他の組み合わせを試しましたが、何が問題なのかわかりませんでした。これが機能する唯一の方法は、各 Web ページでパスを手動で設定することです。しかし、このままでは維持が難しくなります。

ご協力いただきありがとうございます!!

4

1 に答える 1

2

入力ファイルに応じてスクリプトをカスタマイズしようとする代わりに、Web ツリーのどこにスクリプトが存在するかに関係なく機能する 1 行を記述できます。

$xml = simplexml_load_file($_SERVER['DOCUMENT_ROOT'] . '/list.xml');
于 2012-04-23T17:37:15.627 に答える