php

file_get_contentsが使えない時の対処方法



file_get_contentsがレンタルサーバー等で使えない時の対処方法です。

URLからファイルを読み込む設定のallow_url_fopenの設定がセキュリティのためOFFになっているのでfile_get_contentsが出来ないことがあります。

何故、allow_url_fopenがOFFになっているのか?
これは外部のファイルを参照した場合、ファイル内に攻撃性のあるコードやウィルスが仕組まれていた場合、ファイルを読み込んだサイトの情報の流出やサイト閲覧者に攻撃を加える可能性があるためです。
上記に書いた、セキュリティの観点からレンタルサーバー等では外部URLのファイルを読み込めないようにしているところがあります。

ただ、それでも使いたい場合はありますよね・・・
対処方法は色々です。

php.iniの設定を変更できるのであればphp.iniを変更。 ;allow_url_fopen=off allow_url_fopen=on php.iniを変更できない場合phpファイル内で有効にする。
ini_set("allow_url_fopen",1);

cURLを使用してfile_get_contentsと同様の動作を行う。
<?php
$url = "http://scrap.php.xdomain.jp";  // 対象のURL
$ch = curl_init(); // 初期化
curl_setopt( $ch, CURLOPT_URL, $url ); // URLの設定
curl_setopt( $ch, CURLOPT_RETURNTRANSFER, true ); // 出力内容を受け取る設定
$result = curl_exec( $ch ); // データの取得
curl_close($ch); // cURLのクローズ
echo $result; // 取得内容を出力
?>
上記の処理を関数化すればfile_get_contentsの代わりにすることが可能です。


No Responses

コメントを残す