- ベストアンサー
XMLのロードに失敗する
- PHP5のsimplexml_load_fileを使って、RSS(XML)を読み込もうとする際に、一部のサイトでロードに失敗する現象が発生しています。
- ローカル環境や一部のレンタルサーバでは問題なく読み込むことができますが、レンタルサーバAやCでは毎日新聞のRSSのみ読み込めず、エラーメッセージが表示されます。
- この問題は設置環境の影響や読み込み対象の絞り込みが考えられますが、具体的な解決方法や原因特定には至っていません。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
ANo.2です >取り回しが楽なのでsimplexml_load_fileがよいので file_get_contentsとsimplexml_load_stringを組み合わせて使えば「どちらでエラーになるのか」で、そもそも読めない状態なのか読み込んだデータ形式がおかしいのかの判断は出来ると思います。当面はそうやって問題の切り分けを行ってみてはどうでしょう。
その他の回答 (2)
- shimix
- ベストアンサー率54% (865/1590)
#可能であれば各サーバのphpのバージョンを #併記していただくとありがたいのですが(汗 simplexml_load_fileでなく、fileやfile_get_contentsだと取得出来ますか?simplexml_load_file自体はバージョンによってさほどの違いがなかったように記憶していますので、そもそも当該サーバ(のIPアドレス)からのアクセス自体が制限されている可能性が否定出来ません。
お礼
何度もすみません。 動作確認でサーバAを試したところサーバAをのみやはり毎日新聞のRSS(http://mainichi.jp/rss/etc/flash.rss)のみ出力されませんでした。 ご指摘いただいたとおりfile_get_contentsを試したところ、毎日新聞のRSSを取得することができてしまいました。取り回しが楽なのでsimplexml_load_fileがよいので どうもサーバAと毎日新聞、simplexml_load_fileの3つの組み合わせがキーのようですが他のRSSも読み込んでより切り分けを進めてみたいと思います。
補足
ありがとうございます。数日おいたところ何も変えないままちょっと現在動作してしまっているのでまたご報告しますがひとまずバージョンについて一応記載します。 サーバA PHP Version 5.3.3 ローカル PHP Version 5.3.3 サーバB PHP Version 5.2.17 サーバC PHP Version 5.2.11
- osamuy
- ベストアンサー率42% (1231/2878)
読売新聞だと、403になりますね。毎日新聞のだとどうなるかを補足したら回答が得られやすいかも。 > Warning: simplexml_load_file(http://rss.yomiuri.co.jp)
補足
ご指摘ありがとうございます。 誤記しておりました。http://rss.yomiuri.co.jp/rss/yol/topstories改めてアクセスしてみたところRSSが表示されました。 またRSSページを直接開いた時に以前は直接XMLが開けなかったので何らかの仕様が変わった可能性があります。 もうちょっと動作確認の後お礼とさせてください
お礼
ありがとうございます。 ご指摘の通り、試したところ、うまく読み込めてしまいました。 以下のコードを並べて記述してみましたがsimplexml_load_fileではやはり何も出力されなかったので何らかのsimplexml_load_fileの仕様が毎日新聞のRSS と影響しているようでした。 $source = file_get_contents('http://mainichi.jp/rss/etc/flash.rss'); $data = simplexml_load_string($source); #表示される $rss = "http://mainichi.jp/rss/etc/flash.rss"; $data = simplexml_load_file($rss); #表示されない いずれにせよ、ひとまずこれで乗り切ろうかと思います。 ありがとうございます。