その中でcURLという選択をとる人は多い。
色々と便利なcURLだが、SSL(つまりhttps)で外部のサイトへアクセスした場合
SSL certificate problem, verify that the CA cert is OK. Details:
error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed
というエラーが出る場合がある。
これはcURLの–with-ca-bundleオプションで指定されたパスか特定パスにCA証明書がないと起こるエラーだ。
もちろん–with-ca-bundleオプションでCA証明書を指定してもいいのだが、
できない環境(レンタルサーバ)などもあるだろう。
これを回避するには
//URLを指定する
$url='https://www.google.co.jp/';
//cURLを初期化して使用可能にする
$curl=curl_init();
//オプションにURLを設定する
curl_setopt($curl,CURLOPT_URL,$url);
//CA証明書の検証をしない
curl_setopt($curl,CURLOPT_SSL_VERIFYPEER,false);
//URLにアクセスし、結果を表示させる
curl_exec($curl);
//cURLのリソースを解放する
curl_close($curl);
としてやればよい。
また、CA証明書を持っているなら
//URLを指定する
$url='https://www.google.co.jp/';
//CA証明書へのパス
$path='./cacert.pem';
//cURLを初期化して使用可能にする
$curl=curl_init();
//オプションにURLを設定する
curl_setopt($curl,CURLOPT_URL,$url);
//CA証明書ファイルを指定
curl_setopt($curl,CURLOPT_CAINFO,$path);
//URLにアクセスし、結果を表示させる
curl_exec($curl);
//cURLのリソースを解放する
curl_close($curl);
としてやればよい。
ポイントとなる関数
- curl_init ・・・ cURL セッションを初期化する
- curl_setopt ・・・ cURL 転送用オプションを設定する
- curl_exec ・・・ cURL セッションを実行する
- curl_close ・・・ cURL セッションを閉じる
0 件のコメント:
コメントを投稿