PHP(ピー・エイチ・ピー)

cURL関数を使ってみます!!

XMLファイルのURLを読み込んで処理しようとすると、

PHPの環境設定によってはfile_get_contentsで以下のようなエラーが出ることがあります。

 

Warning: file_get_contents() [function.file-get-contents]: URL file-access is disabled in the server configuration in・・・

 

これは、

php.iniで「URLへのアクセスを許可しませんよ!!」という設定を行なっているからです。

 

php.iniを確認してみて下さい

allow_url_fopen="Off"」となっているはずなので、

これを

allow_url_fopen="On"」と変更することで読み込みを行えるようになります。

※allow_url_fopenの設定は、セキュリティ上の理由で「.htaccess」や「ini_set()」では行えないようになっています。

 

ただ、ここで1点疑問に思うことがあるはずです。

 

セキュリティの観点から「allow_url_fopen」をわざわざOffにしているのに、Onにしてしまっていいの?
と!!

 

そんな場合には、cURL()関数を使ってやります。

<?php
$query = "http://maps.google.co.jp/maps/geo?q=%E6%9D%B1%E4%BA%AC%E9%83%BD%E6%B8%AF%E5%8C%BA%E5%85%83%E9%BA%BB%E5%B8%831%E4%B8%81%E7%9B%AE1-1&output=xml&key=2";

if(function_exists("curl_init")){
 //一応cURL関数が使えない場合もあるので、関数が存在しているかのチェック
 $ch = curl_init();
 curl_setopt($ch, CURLOPT_URL, $query);
 curl_setopt($ch, CURLOPT_HEADER, 0);
 curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
 $obj = curl_exec($ch);
 curl_close($ch);
}elseif(ini_get("allow_url_fopen")){
 //allow_url_fopenがonになっている場合
 $obj = file_get_contents($path);
}else{
 echo "何か処理を入れてください。";
}
?>

例えば、私であればこんな具合に書きます。

 

簡単に説明すると、

①$ch = curl_init();
cURLを使いますよっていう宣言みたいなものです。

②curl_setopt($ch, CURLOPT_URL, $path);
URLなどのオプションをセットします。

③curl_setopt($ch, CURLOPT_HEADER, 0);
ヘッダも出力する場合の処理です。

④curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_exec()の実行結果を文字列として返す設定です。

⑤$obj = curl_exec($ch);
実行します。

⑥curl_close($ch);
cURLを使い終わったので、リソースを開放してやります。

この記事を書いている人
株式会社ディープ
名前足立拓也

メールアドレスadachi@deep-deep.jp

関連記事

最近の記事

  1. ドメインについて
  2. WP:WordPress(ワードプレス)
  3. URL設計(URLデザイン)
  4. URL「ディレクトリ名」と文字アンダースコア(_)とハイフン(-)
  5. SEO対策(外部ファイルの読み込み)
  6. URL リダイレクト
  7. インデックスされない
  8. 内部対策は必要?
  9. CMS(シーエムエス)
  10. SEO業者は必要?

Twitter

アーカイブ

PAGE TOP