He escrito este sencillo código:
$ch = curl_init();
//Set options
curl_setopt($ch, CURLOPT_URL, "http://www.php.net");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$website_content = curl_exec ($ch);
En mi caso $website_content
viene como false
. ¿Alguien puede sugerir / aconsejar algo sobre lo que podría estar saliendo mal?
curl_error()
los detalles del error y publíquelos aquí, por favor.curl_error()
reveló?Respuestas:
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()
ycurl_errno()
contendrá más información en caso de avería:* El
curl_init()
manual dice:He observado que la función regresa
FALSE
cuando está usando su$url
parámetro y el dominio no se pudo resolver. Si el parámetro no se utiliza, la función podría no volver nuncaFALSE
. Sin embargo, compruébelo siempre de todos modos, ya que el manual no indica claramente qué son los "errores" en realidad.fuente
curl_exec
FALSE return. - Modo Curl Verbose en PHP ejemploEn mi caso necesito conjunto
VERIFYHOST
yVERIFYPEER
quefalse
, de esta manera:antes de la llamada a
curl_exec($ch)
.Porque estoy trabajando entre dos entornos de desarrollo con certificados autoasignados. Con certificados válidos, no es necesario configurar
VERIFYHOST
yVERIFYPEER
hacerlofalse
porque elcurl_exec($ch)
método funcionará y devolverá la respuesta que espera.fuente
Esto me pasó ayer y en mi caso fue porque estaba siguiendo un manual en PDF para desarrollar algún módulo para comunicarme con una API y mientras copiaba el enlace directamente desde el manual, por alguna extraña razón, el
hyphen
enlace del copiado estaba en una forma diferente codificación y, por lo tanto,curl_exec()
siempre regresabafalse
porque no podía comunicarse con el servidor.Me tomó un par de horas entender finalmente la diferencia en los caracteres a continuación:
Cada vez que intenté acceder al enlace directamente desde un navegador, se convirtió en algo como
https://www.xn--eexample-0m3d.com/api
.Puede que te parezca que son iguales pero si revisas la codificación de
hyphens
aquí verás que el primerohyphen
es un carácter Unicode U + 2010 y el otro es un U + 002D .Espero que esto ayude a alguien.
fuente