以前投稿したjQueryで別ドメインのXMLを読み込んでみるで、違うサーバーで試してみたところうまく取得できない現象に遭遇したので、原因と対応方法をメモしておきます。
サンプルコード
以前紹介したように、PHPでXMLファイルを取得してから、Ajaxで読み込む形です。
JavaScript
$(function() { $.ajax({ url: 'get.php', dataType: 'xml', success: function(data) { alert(data.length); } }); });
PHP
<?php $url = "http://rssblog.ameba.jp/clown-happy/rss20.xml"; $xml = file_get_contents($url); header("Content-type: application/xml; charset=UTF-8"); print $xml;
get.phpの方でXMLファイルの情報が表示されていないので記述の問題かとも思ったのですが、原因はサーバー側の設定の問題のようでした。
allow_url_fopen =offのレンタルサーバーで、動作させるためのソースの変更方法について | 某氏の猫空
「allow_url_fopen =off」のサーバー環境だと、file_get_contents()が動作しないそうです。
対応方法
今回は.htaccessを置いて、下記を記述することで対応できました。
php_flag allow_url_fopen on
ただし、元々許可されていない場合はこの方法でも動作はしないようなので、
phpの記述自体を変更しないといけないようです。
【参考サイト】
コメントが承認されるまで時間がかかります。