0

$ urlパラメーターを別の.phpファイルとしてsimplexml_load_fileを呼び出そうとしています。このファイルは計算を行い、その後、xmlコードを含む文字列を「エコー」します。

これは次のようになります。

$urlrequest= $_SERVER['DOCUMENT_ROOT']."/generateXML.php?id=5&output=xml";
$xml = simplexml_load_file($urlrequest);

ここで、generateXML.phpは次のようになります。

<?php

//do some random code

$aux= '<?xml version="1.0" encoding="UTF-8" ?>'; 
$aux.= "<item>";
$aux.= "<name>John</name>";
$aux.= "<location>somewhere</location>";
$aux.= "</item>";

echo $aux;
?>

問題は、generateXML.phpがリモートIPにある場合は正常に機能しますが、ファイルが同じサーバーにある場合、「外部エンティティのロードに失敗しました」というエラーが発生することです。

問題はURLのパラメータに起因する可能性があることがわかりました。例えば:

$ var1 = file('dosomething.php'); 正常に動作します

しかし、$ var1 = file('dosomething.php?id = 1'); 「ストリームを開くことができませんでした」エラーを返します

これらのパラメータをURLに追加できるようにする必要がありますが、それを行う方法はありますか?

4

2 に答える 2

1

allow-url-fopenリモートサーバーで問題なく動作するとおっしゃっていたので、問題はないようです。
ローカル サーバーにアクセスするためにどの URL を呼び出していますか? のような名前は避けて、のようなhttp://localhost/something.phpIP アドレスのみを使用してみてくださいhttp://127.0.0.1/something.php

于 2013-03-08T14:57:13.560 に答える
0

引数がURLの場合、PHPはソケット要求を行うため、PHP.iniの設定を確認してください。例 :http: //www.php.net/manual/en/filesystem.configuration.php#ini.allow-url -fopen

ただし、スクリプトをパラメーターに直接含めることでXMLを生成するスクリプトをロードする方が、おそらくよりエレガントで高速です。そうしないと、基本的に、無駄な追加リクエストでWebサーバーにストレスがかかるだけです。

于 2013-03-08T14:52:01.283 に答える