file_get_contentsが使用できない

以前投稿した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の記述自体を変更しないといけないようです。
 

【参考サイト】

 

このエントリーをはてなブックマークに追加

関連記事

コメントを残す

メールアドレスが公開されることはありません。
* が付いている欄は必須項目です

CAPTCHA


コメントが承認されるまで時間がかかります。

2024年4月
 123456
78910111213
14151617181920
21222324252627
282930