curl_errno

curl_errno($ch)

Renvoie le numéro d’erreur de la dernière requête cURL, 0 = aucune erreur. Les numéros correspondent aux constantes CURLE_*.

Paramètres

  • $ch – un identifiant obtenu par curl_init().

Exemples

$ch = curl_init("http://127.0.0.1:1/");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 5);
if (curl_exec($ch) === false) {
    echo curl_errno($ch); // 7
}
var_dump(curl_errno($ch) === CURLE_COULDNT_CONNECT); // bool(true)
// distinguer les erreurs courantes
function describe_error($number) {
    switch ($number) {
        case 0: return "aucune erreur";
        case CURLE_COULDNT_RESOLVE_HOST: // 6
            return "serveur inconnu";
        case CURLE_COULDNT_CONNECT: // 7
            return "le serveur ne répond pas";
        case CURLE_OPERATION_TIMEDOUT: // 28
            return "délai dépassé";
        case CURLE_SSL_CACERT: // 60
            return "certificat non vérifié";
        default: return "erreur " . $number;
    }
}
echo describe_error(curl_errno($ch)); // le serveur ne répond pas

Points d’attention

  • Le numéro reste le même d’une version de libcurl à l’autre, le texte de curl_error() non. Fondez les décisions du script sur le numéro.
  • Les codes de statut HTTP (404, 500) ne sont pas des erreurs cURL, curl_errno() renvoie 0. Avec l’option CURLOPT_FAILONERROR, elle renvoie l’erreur 22 pour un code de 400 ou plus.
  • Une description générale du numéro est renvoyée par curl_strerror(). Elle aussi diffère selon les versions de libcurl, la formulation d’une même erreur a changé au fil du temps.

Fonctions associées :
curl_error()
curl_exec()
curl_getinfo()