La comprobación y el manejo de errores son amigos del programador. Compruebe los valores de retorno de las funciones cURL de inicialización y ejecución. curl_error()y curl_errno()contendrá más información en caso de avería:
try {
$ch = curl_init();
// Check if initialization had gone wrong*
if ($ch === false) {
throw new Exception('failed to initialize');
}
curl_setopt($ch, CURLOPT_URL, 'http://example.com/');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt(/* ... */);
$content = curl_exec($ch);
// Check the return value of curl_exec(), too
if ($content === false) {
throw new Exception(curl_error($ch), curl_errno($ch));
}
/* Process $content here */
// Close curl handle
curl_close($ch);
} catch(Exception $e) {
trigger_error(sprintf(
'Curl failed with error #%d: %s',
$e->getCode(), $e->getMessage()),
E_USER_ERROR);
}
* El curl_init() manual dice:
Devuelve un identificador cURL en caso de éxito, FALSO en errores.
He observado que la función regresa FALSEcuando está usando su $urlparámetro y el dominio no se pudo resolver. Si el parámetro no se utiliza, la función podría no volver nunca FALSE. Sin embargo, compruébelo siempre de todos modos, ya que el manual no indica claramente qué son los "errores" en realidad.
curl_error()los detalles del error y publíquelos aquí, por favor.