2010-11-15 19 views
5
<?php 
$a = file_get_contents('http://www.google.com'); 
echo $ 

¿Por qué el navegador devuelve este error?file_get_contents - Tiempo de espera de conexión agotado

Warning: file_get_contents(http://www.google.com) [function.file-get-contents]: failed to open stream: Connection timed out in /home/test.php on line 2 

Respuesta

3

Probablemente su servidor no pueda conectarse a un recurso externo, por ejemplo, debido a las restricciones del cortafuegos.

+2

... o Google está caído, pero eso no parece probable: D – Hamish

+0

¿Cómo puedo solucionar este problema? – Bruno

+0

Por cierto, usé Google solo por ejemplo, está funcionando, pero con el enlace que quiero no es. – Bruno

0

file_get_contents no funciona bien con la obtención de archivos remotos y no debe utilizarse. No se trata de conexiones de red lentas o redirecciones, y no devuelve códigos de error. Debería usar curl para obtener archivos remotos.

Hay un ejemplo en el manual de curl_exec: http://us3.php.net/manual/en/function.curl-exec.php

+5

Le aseguro que file_get_contents() funciona bien para obtener archivos remotos y * puede * usarse en * la mayoría * de las situaciones. Además, * sí * sigue los redireccionamientos HTTP adecuados, pero recientemente se han notificado errores con esta característica, que asumo es a lo que se refiere. Finalmente, sí, si necesita los códigos de estado HTTP, debe usar algo más sólido. Si simplemente necesita detectar un error, entonces puede usar file_get_contents() muy bien. Nuevamente, esto está bien para muchas situaciones, pero ciertamente no todas, como ya lo ha señalado. – Brad

+1

Abajo votando una respuesta correcta? No dije que no funcionó, dije que no funcionaba bien. curl es una herramienta mucho más confiable y robusta para usar, como dijiste. El error de tiempo de espera experimentado con mayor probabilidad no ocurriría con curl ya que Curl se establece de forma predeterminada en el tiempo de espera de la red (es decir, 2 minutos). –

0

Podría ser problema del lado del servidor, podría ser su servidor no puede comunicarse con otro servidor de forma remota. Debe comunicarse con el administrador del servidor.

2

Tuve el mismo problema, no pude descargar usando file_get_contents(), pero usar curl en la línea de comando para la misma URL funcionó bien. Resultó que trató de conectarse a través de IPv6 que falló.

Lo resolví deshabilitando IPv6 en los parámetros de mi kernel.

+0

En lugar de desactivar IPv6, debería intentar repararlo. También puede hacer que ['file_get_contents()' intente la conexión a través de IPv6 y luego también a través de IPv4] (https://www.slightfuture.com/webdev/php-file-contents-dual-stack) si eso falla. – Aeyoun

Cuestiones relacionadas