LoginSignup
3

More than 5 years have passed since last update.

Guzzle で curl のエラーコードを取得する

Posted at

結論

try {
    // 名前解決に失敗するドメイン
    // ※エラーコードは CURLE_COULDNT_RESOLVE_HOST (6)
    $c->get('http://domaindoesnotexist.co.jp');
} catch (\GuzzleHttp\Exception\ConnectException $e) {
    echo $e->getHandlerContext()['errno'];
}
実行結果
6

補足

HTTP クライアントである Guzzle は内部で PHP 組み込みの curl を利用している。

通常、Guzzle を用いた際に curl でエラーが発生したときは GuzzleHttp\Exception\ConnectException が投げられ、エラーの内容はメッセージに入る。

ドメインを名前解決できないとき
GuzzleHttp\Exception\ConnectException with message 'cURL error 6: Couldn't resolve host 'domaindoesnotexist.co.jp' (see http://curl.haxx.se/libcurl/c/libcurl-errors.html)'

一方で、curl にはエラーコードが存在する
上記の例でも、ドメインの名前解決に失敗した祭には 6 というエラーコードが返されていることがわかる。

「ドメインの名前解決に失敗したときだけ、別の処理をしたい」などといった、特定のシチュエーションにおいてこのエラーコードを取得したいことがある。

例外のメッセージをパースする力技で取得することもできるが、冒頭の結論に書いてある方法を使うことによって正式な?手続きで取得することができる。

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3