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

Perché il browser restituisce questo errore?file_get_contents - Connessione scaduta

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 

risposta

3

Molto probabilmente il server non è in grado di connettersi a una risorsa esterna, ad esempio a causa delle restrizioni del firewall.

+2

... o Google è inattivo, ma non sembra probabile: D – Hamish

+0

Come posso risolvere questo problema? – Bruno

+0

Btw, ho usato google solo per esempio, funziona, ma con il link che voglio non lo è. – Bruno

0

file_get_contents non funziona bene con i file remoti e non deve essere utilizzato. Non ha a che fare con connessioni di rete lente o reindirizzamenti e non restituisce codici di errore. Dovresti usare curl invece di recuperare i file remoti.

c'è un esempio nel manuale per curl_exec: http://us3.php.net/manual/en/function.curl-exec.php

+5

Ti assicuro che file_get_contents() funziona perfettamente con i file remoti e * può * essere utilizzato nelle * situazioni * più *. Inoltre, * segue * i reindirizzamenti HTTP appropriati, ma ci sono stati bug segnalati di recente con questa funzione, che presumo sia ciò a cui ti stai riferendo. Infine, sì, se hai bisogno dei codici di stato HTTP dovresti usare qualcosa di più robusto. Se hai semplicemente bisogno di rilevare un errore, puoi usare file_get_contents() bene. Di nuovo, questo va bene per molte situazioni, ma certamente non tutte, come hai sottolineato. – Brad

+1

Giù votando una risposta corretta? Non ho detto che non ha funzionato, ho detto che non funziona bene. curl è uno strumento molto più affidabile e robusto da usare, come hai affermato. L'errore di timeout che si è verificato con più probabilità non si verificherebbe con il ricciolo poiché il curl si imposta automaticamente sul timeout di rete (ovvero 2 minuti). –

0

Potrebbe essere problema lato server, potrebbe essere il server non è in grado di comunicare con altri server in remoto. Devi comunicare con l'amministratore del server.

2

Ho avuto lo stesso problema, non è stato possibile scaricare utilizzando file_get_contents(), ma l'utilizzo di arricciamento sulla riga di comando per lo stesso URL ha funzionato correttamente. Alla fine ha provato a connettersi su IPv6 che non è riuscito.

Ho risolto disabilitando IPv6 nei miei parametri del kernel.

+0

Invece di disattivare IPv6, dovresti provare a risolverlo. Puoi anche fare in modo che ['file_get_contents()' prova la connessione su IPv6 e poi anche su IPv4] (https://www.slightfuture.com/webdev/php-file-contents-dual-stack) se questo non funziona. – Aeyoun

Problemi correlati