【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 $path = “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”)){
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $path);
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を使い終わったので、リソースを開放してやります。