¿Qué es cURL?
cURL (Client URL) es una biblioteca y una herramienta de línea de comandos que permite a los desarrolladores transferir datos a través de distintos protocolos, como HTTP, HTTPS, FTP, entre otros. Es especialmente útil en el desarrollo web para realizar llamadas API, descargar archivos, y mucho más.
Errores comunes en cURL
A continuación, detallamos los errores más frecuentes que pueden encontrar los usuarios de cURL, explicamos su significado y proporcionamos ejemplos de cómo solucionarlos.
1. cURL error 6: Unable to resolve host
Este error indica que cURL no pudo resolver el nombre de dominio proporcionado. Generalmente, esto se debe a fallas en la conexión de red o un error tipográfico en la URL.
Solución: Verifica la conexión a Internet y asegúrate de que el nombre de dominio esté escrito correctamente.
2. cURL error 7: Failed to connect to host
Este error ocurre cuando cURL no puede establecer una conexión con el servidor. Puede ser causado por un servidor caído o bloqueos de firewall.
Solución: Comprueba si el servidor está activo y accesible desde tu ubicación. También, verifica configuraciones de firewall que puedan estar bloqueando la conexión.
3. cURL error 28: Operation timed out
Indica que la operación realizada por cURL ha excedido el tiempo de espera. Esto puede suceder al intentar conectarse a un servicio que no responde.
Solución: Aumenta el tiempo de espera utilizando la opción CURLOPT_TIMEOUT, como se muestra a continuación:
curl_setopt($ch, CURLOPT_TIMEOUT, 30); // Establecer timeout a 30 segundos
4. cURL error 22: HTTP error
Este error se produce cuando cURL recibe un código de estado HTTP no válido o inesperado al realizar una solicitud. Esto incluye códigos 4xx y 5xx.
Solución: Revisa la respuesta del servidor para identificar el código de error. Puedes utilizar el siguiente ejemplo para obtener más información sobre el error:
$response = curl_exec($ch);
if (curl_errno($ch)) {
echo 'Error:' . curl_error($ch);
} else {
echo 'Respuesta: ' . $response;
}
5. cURL error 60: SSL certificate problem
Este error indica que hay un problema con el certificado SSL del servidor. Puede ser que el certificado sea auto-firmado o simplemente no esté presente.
Solución: Puedes omitir la verificación del certificado SSL (aunque no se recomienda en producción) usando:
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
6. cURL error 35: SSL connect error
Este error señala que hay un problema al establecer una conexión SSL. Puede estar causado por versiones incompatibles de TLS o configuraciones inadecuadas en el servidor.
Solución: Asegúrate de que tanto tu servidor como cURL estén actualizados y sean compatibles con las versiones más recientes de TLS.
7. cURL error 1: Unsupported protocol
Este error se produce cuando se intenta utilizar un protocolo que no está habilitado o no es soportado por la instalación de cURL.
Solución: Verifica las configuraciones de la instalación de cURL y asegúrate de que tienes habilitados los protocolos necesarios.
Prácticas recomendadas para usar cURL
Para minimizar la aparición de errores al usar cURL, considera adoptar las siguientes prácticas recomendadas:
- Validar las URL: Asegúrate de que las URLs estén bien formadas antes de hacer una solicitud.
- Gestionar errores apropiadamente: Implementa siempre la lógica para manejar errores y excepciones.
- Realizar pruebas en entornos seguros: Siempre prueba en entornos de desarrollo antes de implementar en producción.
- Mantener cURL actualizado: Asegúrate de utilizar la versión más reciente de cURL para aprovechar las mejoras en seguridad y rendimiento.
Listado de Códigos de Error de cURL
| Código | Nombre del Error | Descripción |
|---|---|---|
| 0 | Success | La operación se completó con éxito de acuerdo a las instrucciones. |
| 1 | Unsupported protocol | Esta versión de curl no es compatible con el protocolo utilizado. |
| 2 | Failed to initialize | Error al inicializar. |
| 3 | URL malformed | La sintaxis de la URL no es correcta. |
| 4 | A required feature/option was not enabled | Una característica u opción necesaria para la solicitud no estaba habilitada o fue deshabilitada explícitamente en tiempo de compilación. |
| 5 | Could not resolve proxy | El host proxy especificado no pudo resolverse. |
| 6 | Could not resolve host | El host remoto especificado no pudo resolverse. |
| 7 | Failed to connect to host | Error al conectar con el host. |
| 8 | Weird server reply | El servidor envió datos que curl no pudo analizar. |
| 9 | FTP access denied | El servidor denegó el inicio de sesión o el acceso al recurso/directorio. A menudo, se intentó cambiar a un directorio que no existe. |
| 10 | FTP accept failed | Mientras se esperaba la conexión del servidor en una sesión FTP activa, se envió un código de error a través de la conexión de control. |
| 11 | FTP weird PASS reply | curl no pudo analizar la respuesta enviada al comando PASS. |
| 12 | FTP active transfer timeout | Durante una sesión FTP activa, el tiempo de espera expiró mientras se esperaba que el servidor se conectara de vuelta a curl. |
| 13 | FTP weird PASV reply | curl no pudo analizar la respuesta enviada al comando PASV. |
| 14 | FTP weird 227 format | curl no pudo analizar la línea 227 enviada por el servidor. |
| 15 | FTP cannot use host | No se pudo resolver la IP del host recibida en la línea 227. |
| 16 | HTTP/2 error | Se detectó un problema en la capa de framing de HTTP/2. Problema genérico; ver el mensaje de error para más detalles. |
| 17 | FTP could not set binary | No se pudo cambiar el método de transferencia a binario. |
| 18 | Partial file | Solo se transfirió una parte del archivo. |
| 19 | FTP could not download/access file | El comando RETR (o similar) falló para descargar/acceder al archivo. |
| 21 | FTP quote error | Un comando quote devolvió un error del servidor. |
| 22 | HTTP page not retrieved | La URL solicitada no se encontró o devolvió otro error con código HTTP 400 o superior. Este código solo aparece si se usa --fail. |
| 23 | Write error | curl no pudo escribir datos en el sistema de archivos local o similar. |
| 25 | Failed starting the upload | Fallo al iniciar la carga. Para FTP, el servidor normalmente denegó el comando STOR. |
| 26 | Read error | Varios problemas de lectura. |
| 27 | Out of memory | Falló una solicitud de asignación de memoria. |
| 28 | Operation timeout | Se alcanzó el período de tiempo de espera especificado según las condiciones. |
| 30 | FTP PORT failed | El comando PORT falló. No todos los servidores FTP lo admiten; intente usar PASV. |
| 31 | FTP could not use REST | El comando REST falló. Se usa para reanudar transferencias FTP. |
| 33 | HTTP range error | El comando de rango no funcionó. |
| 34 | HTTP post error | Error interno de generación de la solicitud POST. |
| 35 | SSL connect error | Falló el handshaking SSL. |
| 36 | Bad download resume | No se pudo continuar una descarga abortada anteriormente. |
| 37 | FILE could not read file | Error al abrir el archivo. ¿Problemas de permisos? |
| 38 | LDAP cannot bind | Falló la operación de enlace LDAP. |
| 39 | LDAP search failed | Falló la búsqueda LDAP. |
| 41 | Function not found | No se encontró una función LDAP requerida. |
| 42 | Aborted by callback | Una aplicación le dijo a curl que abortara la operación. |
| 43 | Internal error | Una función fue llamada con un parámetro incorrecto. |
| 45 | Interface error | No se pudo utilizar una interfaz de salida especificada. |
| 47 | Too many redirects | Al seguir redirecciones, curl alcanzó la cantidad máxima. |
| 48 | Unknown option | Se especificó una opción desconocida para libcurl. |
| 49 | Malformed telnet option | Opción telnet mal formada. |
| 52 | Empty reply from server | El servidor no respondió nada, lo que se considera un error. |
| 53 | SSL crypto engine not found | No se encontró el motor de criptografía SSL. |
| 54 | Cannot set SSL crypto engine as default | No se puede establecer el motor de criptografía SSL como predeterminado. |
| 55 | Failed sending network data | Fallo al enviar datos de red. |
| 56 | Failure in receiving network data | Fallo al recibir datos de red. |
| 58 | Problem with the local certificate | Problema con el certificado local. |
| 59 | Could not use specified SSL cipher | No se pudo utilizar el cifrado SSL especificado. |
| 60 | Peer certificate cannot be authenticated | El certificado del peer (servidor) no se puede autenticar con los certificados CA conocidos. |
| 61 | Unrecognized transfer encoding | Codificación de transferencia no reconocida. |
| 63 | Maximum file size exceeded | Se superó el tamaño máximo del archivo. |
| 64 | Requested FTP SSL level failed | Falló el nivel SSL FTP solicitado. |
| 65 | Sending data requires rewind that failed | El envío de datos requiere un rebobinado (rewind) que falló. |
| 66 | Failed to initialize SSL Engine | Fallo al inicializar el motor SSL. |
| 67 | Login denied | El nombre de usuario, contraseña o similar no fue aceptado y curl falló al iniciar sesión. |
| 68 | File not found on TFTP server | Archivo no encontrado en el servidor TFTP. |
| 69 | Permission problem on TFTP server | Problema de permisos en el servidor TFTP. |
| 70 | Out of disk space on TFTP server | Sin espacio en disco en el servidor TFTP. |
| 71 | Illegal TFTP operation | Operación TFTP ilegal. |
| 72 | Unknown TFTP transfer ID | ID de transferencia TFTP desconocido. |
| 73 | File already exists (TFTP) | El archivo ya existe (TFTP). |
| 74 | No such user (TFTP) | No existe tal usuario (TFTP). |
| 77 | Problem reading the SSL CA cert | Problema al leer el certificado CA SSL (¿ruta? ¿derechos de acceso?). |
| 78 | The resource referenced in the URL does not exist | El recurso referenciado en la URL no existe. |
| 79 | Unspecified error during SSH session | Ocurrió un error no especificado durante la sesión SSH. |
| 80 | Failed to shut down the SSL connection | Fallo al cerrar la conexión SSL. |
| 82 | Could not load CRL file | No se pudo cargar el archivo CRL (lista de revocación de certificados), falta o tiene un formato incorrecto. |
| 83 | Issuer check failed | Falló la comprobación del emisor del certificado. |
| 84 | The FTP PRET command failed | El comando FTP PRET falló. |
| 85 | Mismatch of RTSP CSeq numbers | Desajuste de los números CSeq de RTSP. |
| 86 | Mismatch of RTSP Session Identifiers | Desajuste de los identificadores de sesión RTSP. |
| 87 | Unable to parse FTP file list | No se puede analizar la lista de archivos FTP. |
| 88 | FTP chunk callback reported error | La devolución de llamada del chunk de FTP reportó un error. |
| 89 | No connection available, the session is queued | No hay conexión disponible, la sesión está en cola. |
| 90 | SSL public key does not match pinned public key | La clave pública SSL no coincide con la clave pública anclada (pinned). |
| 91 | Invalid SSL certificate status | Estado de certificado SSL no válido. |
| 92 | Stream error in HTTP/2 framing layer | Error de stream en la capa de framing de HTTP/2. |
| 93 | An API function was called from inside a callback | Se llamó a una función API desde dentro de un callback. |
| 94 | An authentication function returned an error | Una función de autenticación devolvió un error. |
| 95 | Problem in the HTTP/3 layer | Se detectó un problema en la capa HTTP/3. Genérico; ver el mensaje de error para más detalles. |
| 96 | QUIC connection error | Error de conexión QUIC (protocolo de HTTP/3). Puede ser causado por un error de la biblioteca SSL. |
| 97 | Proxy handshake error | Error en el handshake del proxy. |
| 98 | A client-side certificate is required | Se requiere un certificado del lado del cliente para completar el handshake TLS. |
| 99 | Poll or select returned fatal error | Poll o select devolvió un error fatal. |
| 100 | A value or data field grew larger than allowed | Un valor o campo de datos creció más de lo permitido. |
Resumen de errores
Conocer y entender los errores comunes de cURL no solo ayuda a mejorar la productividad sino que también permite ejecutar operaciones de red de manera más segura y eficiente. Ahora que tienes una lista de errores comunes, estarás mejor preparado para diagnosticar problemas al usar cURL.

Deja una respuesta