mostrar errores error curlopt_timeout curl_setopt curl_exec code php curl

errores - php curl error



Cómo atrapar errores de curl en PHP (3)

Estoy usando las funciones curl de PHP para publicar datos en el servidor web desde mi máquina local. Mi código es el siguiente:

$c = curl_init(); curl_setopt($c, CURLOPT_URL, $url); curl_setopt($c, CURLOPT_RETURNTRANSFER,true); curl_setopt($c, CURLOPT_POST, true); curl_setopt($c, CURLOPT_POSTFIELDS, $data); $result=curl_exec ($c); if(curl_exec($c) === false) { echo "ok"; } else { echo "error"; } curl_close ($c);

Desafortunadamente no puedo detectar ningún error como 404, 500 o error de red. Entonces, ¿cómo voy a saber que los datos no fueron publicados o recuperados desde el control remoto?


Puede usar la función curl_error() para detectar si hubo algún error. Por ejemplo:

$ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $your_url); curl_setopt($ch, CURLOPT_FAILONERROR, true); // Required for HTTP error codes to be reported via our call to curl_error($ch) //... curl_exec($ch); if (curl_error($ch)) { $error_msg = curl_error($ch); } curl_close($ch); if (isset($error_msg)) { // TODO - Handle cURL error accordingly }

Vea la descripción de los códigos de error de curl aquí


Si CURLOPT_FAILONERROR es false , los errores http no desencadenarán errores curl .

<?php if (@$_GET[''curl'']=="yes") { header(''HTTP/1.1 503 Service Temporarily Unavailable''); } else { $ch=curl_init($url = "http://".$_SERVER[''SERVER_NAME''].$_SERVER[''PHP_SELF'']."?curl=yes"); curl_setopt($ch, CURLOPT_FAILONERROR, true); $response=curl_exec($ch); $http_status = curl_getinfo($ch, CURLINFO_HTTP_CODE); $curl_errno= curl_errno($ch); if ($http_status==503) echo "HTTP Status == 503 <br/>"; echo "Curl Errno returned $curl_errno <br/>"; }


puedes generar un error de curl después de su ejecución

$url = ''http://example.com''; $ch = curl_init($url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); $result = curl_exec($ch); if(curl_errno($ch)){ echo ''Request Error:'' . curl_error($ch); }

y aquí están los códigos de error curl

si alguien necesita más información sobre los errores de curl

<?php $error_codes=array( [1] => ''CURLE_UNSUPPORTED_PROTOCOL'', [2] => ''CURLE_FAILED_INIT'', [3] => ''CURLE_URL_MALFORMAT'', [4] => ''CURLE_URL_MALFORMAT_USER'', [5] => ''CURLE_COULDNT_RESOLVE_PROXY'', [6] => ''CURLE_COULDNT_RESOLVE_HOST'', [7] => ''CURLE_COULDNT_CONNECT'', [8] => ''CURLE_FTP_WEIRD_SERVER_REPLY'', [9] => ''CURLE_REMOTE_ACCESS_DENIED'', [11] => ''CURLE_FTP_WEIRD_PASS_REPLY'', [13] => ''CURLE_FTP_WEIRD_PASV_REPLY'', [14]=>''CURLE_FTP_WEIRD_227_FORMAT'', [15] => ''CURLE_FTP_CANT_GET_HOST'', [17] => ''CURLE_FTP_COULDNT_SET_TYPE'', [18] => ''CURLE_PARTIAL_FILE'', [19] => ''CURLE_FTP_COULDNT_RETR_FILE'', [21] => ''CURLE_QUOTE_ERROR'', [22] => ''CURLE_HTTP_RETURNED_ERROR'', [23] => ''CURLE_WRITE_ERROR'', [25] => ''CURLE_UPLOAD_FAILED'', [26] => ''CURLE_READ_ERROR'', [27] => ''CURLE_OUT_OF_MEMORY'', [28] => ''CURLE_OPERATION_TIMEDOUT'', [30] => ''CURLE_FTP_PORT_FAILED'', [31] => ''CURLE_FTP_COULDNT_USE_REST'', [33] => ''CURLE_RANGE_ERROR'', [34] => ''CURLE_HTTP_POST_ERROR'', [35] => ''CURLE_SSL_CONNECT_ERROR'', [36] => ''CURLE_BAD_DOWNLOAD_RESUME'', [37] => ''CURLE_FILE_COULDNT_READ_FILE'', [38] => ''CURLE_LDAP_CANNOT_BIND'', [39] => ''CURLE_LDAP_SEARCH_FAILED'', [41] => ''CURLE_FUNCTION_NOT_FOUND'', [42] => ''CURLE_ABORTED_BY_CALLBACK'', [43] => ''CURLE_BAD_FUNCTION_ARGUMENT'', [45] => ''CURLE_INTERFACE_FAILED'', [47] => ''CURLE_TOO_MANY_REDIRECTS'', [48] => ''CURLE_UNKNOWN_TELNET_OPTION'', [49] => ''CURLE_TELNET_OPTION_SYNTAX'', [51] => ''CURLE_PEER_FAILED_VERIFICATION'', [52] => ''CURLE_GOT_NOTHING'', [53] => ''CURLE_SSL_ENGINE_NOTFOUND'', [54] => ''CURLE_SSL_ENGINE_SETFAILED'', [55] => ''CURLE_SEND_ERROR'', [56] => ''CURLE_RECV_ERROR'', [58] => ''CURLE_SSL_CERTPROBLEM'', [59] => ''CURLE_SSL_CIPHER'', [60] => ''CURLE_SSL_CACERT'', [61] => ''CURLE_BAD_CONTENT_ENCODING'', [62] => ''CURLE_LDAP_INVALID_URL'', [63] => ''CURLE_FILESIZE_EXCEEDED'', [64] => ''CURLE_USE_SSL_FAILED'', [65] => ''CURLE_SEND_FAIL_REWIND'', [66] => ''CURLE_SSL_ENGINE_INITFAILED'', [67] => ''CURLE_LOGIN_DENIED'', [68] => ''CURLE_TFTP_NOTFOUND'', [69] => ''CURLE_TFTP_PERM'', [70] => ''CURLE_REMOTE_DISK_FULL'', [71] => ''CURLE_TFTP_ILLEGAL'', [72] => ''CURLE_TFTP_UNKNOWNID'', [73] => ''CURLE_REMOTE_FILE_EXISTS'', [74] => ''CURLE_TFTP_NOSUCHUSER'', [75] => ''CURLE_CONV_FAILED'', [76] => ''CURLE_CONV_REQD'', [77] => ''CURLE_SSL_CACERT_BADFILE'', [78] => ''CURLE_REMOTE_FILE_NOT_FOUND'', [79] => ''CURLE_SSH'', [80] => ''CURLE_SSL_SHUTDOWN_FAILED'', [81] => ''CURLE_AGAIN'', [82] => ''CURLE_SSL_CRL_BADFILE'', [83] => ''CURLE_SSL_ISSUER_ERROR'', [84] => ''CURLE_FTP_PRET_FAILED'', [84] => ''CURLE_FTP_PRET_FAILED'', [85] => ''CURLE_RTSP_CSEQ_ERROR'', [86] => ''CURLE_RTSP_SESSION_ERROR'', [87] => ''CURLE_FTP_BAD_FILE_LIST'', [88] => ''CURLE_CHUNK_FAILED''); ?>