PHPのcURLのエラーハンドリング

スポンサーリンク

概要

基本的には curl_exec() の戻り値でエラーかどうかはわかるのですが、何のエラーが起きたのかが戻り値だけでは全然わからない。
ということで、一通り結果を取得する方法を列挙しておきます。
なお、

curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); 

上記のようにCURLOPT_RETURNTRANSFER を設定しているものとします。

curl_exec

コンテンツとして返ってきたものが取得できます。
404 などのエラーでもエラーページの内容が返ってくる。

 $body = curl_exec($curl); 

curl_getinfo

直前の情報を取得します。

$info = curl_getinfo($curl);

例えば、こんな情報になります。

Array
(
     [url] => https://koumei2.com/test.html
     [content_type] => text/html; charset=UTF-8
     [http_code] => 404
     [header_size] => 840
     [request_size] => 59
     [filetime] => -1
     [ssl_verify_result] => 0
     [redirect_count] => 0
     [total_time] => 0.119588
     [namelookup_time] => 0.002611
     [connect_time] => 0.015776
     [pretransfer_time] => 0.047939
     [size_upload] => 0
     [size_download] => 52
     [speed_download] => 436
     [speed_upload] => 0
     [download_content_length] => 52
     [upload_content_length] => -1
     [starttransfer_time] => 0.119503
     [redirect_time] => 0
     [redirect_url] =>
     [primary_ip] => xxx.xxx.xxx.xxx
     [certinfo] => Array
         (
         )
    [primary_port] => 443
    [local_ip] => yyy.yyy.yyy.yyy
    [local_port] => 55397
    [http_version] => 2
    [protocol] => 2
    [ssl_verifyresult] => 0
    [scheme] => HTTPS
    [appconnect_time_us] => 47897
    [connect_time_us] => 15776
    [namelookup_time_us] => 2611
    [pretransfer_time_us] => 47939
    [redirect_time_us] => 0
    [starttransfer_time_us] => 119503
    [total_time_us] => 119588
)

エラー情報

エラー情報は下記で取得できます。

$errno = curl_errno($curl);
$error = curl_error($curl);

それぞれ、エラー番号とエラーメッセージが取得できます。
エラーの詳細は下記が詳しいです。

https://curl.haxx.se/libcurl/c/libcurl-errors.html

コメント

タイトルとURLをコピーしました