2011-01-05 20 views
9

tengo el siguiente código PHP:URL localhost funciona en el navegador pero devuelve bool (false) para PHP curl_exec

$curl = curl_init(); 
curl_setopt ($curl, CURLOPT_URL, $URL); 
curl_setopt ($curl, CURLOPT_RETURNTRANSFER, true); 
$html = curl_exec ($curl); 

echo $html; 

poco con siguiente resultado:

y esto a pesar de que el navegador puede mostrar http://localhost/index.html sin ningún problema. Estoy ejecutando un servidor xampp apache en el servidor local.

No puedo entender cuál es el problema. Cualquier ayuda sería muy apreciada.

+0

¿Está definitivamente ejecutando este código desde su servidor local? – fire

+0

@fire Sí, estoy ejecutando el código en el host local. – tucson

+0

Pruebe '127.0.0.1' en lugar de' localhost'. Si eso funciona, es un problema de DNS. Si no funciona, hay algunas otras cosas que podría ser. Intente comprobar los encabezados de CURL configurando ['CURLOPT_HEADER'] (http: //us2.php.net/curl_setopt) opción ... Además, establezca 'CURLOPT_FAILONERROR' en falso para esa comprobación ... – ircmaxell

Respuesta

4

Debe asegurarse de que su Apache escucha en las interfaces correctas. Tuve este problema una vez en una máquina Vist: Apache (XAMP) solo escuchaba en IPv4, pero en Vista, "localhost" se resuelve de forma predeterminada en una dirección IPv6.

Para deshabilitar la dirección IPv6, edítelo % system32% \ drivers \ etc \ hosts archive y elimine la :: 1 línea.

0

cURL podría estar convirtiendo la solicitud a IPv6 entre bastidores. Además de la solución sugerida por xrstf, puede intentar usar 127.0.0.1 en lugar de localhost para forzar una conexión IPv4.

0

Una cosa posible es un problema de firewall. Curl de forma predeterminada intenta usar el puerto 1080, que probablemente no esté abierto en su servidor local/enrutador/ISP.

Si no es un problema, entonces, tratar después de su ejecución rizo, poner algo como esto:

echo curl_getinfo($ch) . '<br/>'; 
echo curl_errno($ch) . '<br/>'; 
echo curl_error($ch) . '<br/>'; 

verás lo que falló durante su ejecución rizo. Más información: curl_getinfocurl_errnocurl_error

0

Intente utilizar

if(curl_exec($ch) === false) 
{ 
    echo 'Curl error: ' . curl_error($ch); 
} 
else 
{ 
    echo 'Operation completed without any errors'; 
} 
// (see : www.php.net/curl_error) 

Para ver qué está sucediendo, espero que esta ayuda

0

Esto podría ser:

tema IPV6 con curl:

rizo configurado con: c-ares habilitado ipv6 habilitado sistema local tiene ipv6 deshabilitado. Por favor, chequee esto.

También puede compartir el archivo de host para obtener más detalles.

Cuestiones relacionadas