電子書籍の厳選無料作品が豊富!

AmazonのAPIを使ったWebサイトを作っていて、simplexml_load_fileを使って外部サーバのXMLを読み込もうとしています。
ローカル・サーバ1ではうまくいきますが、サーバ2ではI/O warning : failed to load external entity となり読み込めません。

3つのサーバで使用しているプログラムは全く同じです。
PHPのバージョン、SimpleXMLのRevisionは下記の通り。
ローカル:5.2.5、1.151.2.22.2.35
サーバ1:5.2.9、1.151.2.22.2.46
サーバ2:5.2.9、1.151.2.22.2.46

調べていると、XML文字列の中に実体参照等パースエラーとなる文字が含まれているとこのようなエラーが出るとのことでしたが、該当するような文字列はありませんし、同じプログラムでも別のサーバであれば取得できるのでその可能性は考え辛いですが、この場合の対処方法として、file_get_contentsで一度文字列として受け取ってから、simplexml_load_stringでパースするとあったので、それも試しました。
しかし、simplexml_load_fileであれば数秒で取得できるものが、file_get_contentsだと4分以上かかりました。
できればsimplexml_load_fileで行いたいのですが、上記のような違いが出る可能性として考えられることは何かありますでしょうか。

A 回答 (1件)

PHPの設定、あるいはサーバ自体の設定や構成に差がある、ということがひとつの可能性として考えられるのではないでしょうか。

    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!