2016-02-03 38 views
5

Come accennato in precedenza, le file_get_contents() di PHP funzione o anche i fopen()/fread() stucks combinazione e volte su quando si cerca di leggere questo semplice url immagine:file_get_contents() di PHP rimane bloccata nel caricamento di un'immagine

http://pics.redblue.de/artikelid/GR/1140436/fee_786_587_png 

ma la stessa immagine è facilmente caricata dai browser, qual è il problema?

Modificato:

come richiesto nei commenti, sto mostrando la funzione che ho usato per ottenere i dati:

function customRead($url) 
{ 
    $contents = ''; 

    $handle = fopen($url, "rb"); 

    $dex = 0; 

    while (!feof($handle)) 
    { 
     if ($dex++ > 100) 
      break; 

     $contents .= fread($handle, 2048); 
    } 

    fclose($handle); 

    echo "\nbreaking due to too many calls...\n"; 

    return $contents; 
} 

Inoltre ho provato semplicemente questo:

echo file_get_contents('http://pics.redblue.de/artikelid/GR/1140436/fee_786_587_png'); 

Entrambi dare lo stesso numero

CURA:

Come suggerito in un commento che ho usato ricciolo:

$ch = curl_init(); 
    curl_setopt($ch, CURLOPT_URL, $url); 
    curl_setopt($ch, CURLOPT_HEADER, false); 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); 
    curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.1 Safari/537.11'); 
    $res = curl_exec($ch); 
    $rescode = curl_getinfo($ch, CURLINFO_HTTP_CODE); 
    curl_close($ch) ; 
    echo "\n\n\n[DATA:"; 
    echo $res; 
    echo "]\n\n\n[CODE:"; 
    print_r($rescode); 
    echo "]\n\n\n[ERROR:"; 
    echo curl_error($ch); 
    echo "]\n\n\n"; 

questo è il risultato:

[DATA:] 

[CODE:0] 

[ERROR:] 
+0

È fee_786_587_png o fee_786_587.png? –

+0

Pubblica il codice che hai provato. –

+0

è _png, esattamente come menzionato nell'URL –

risposta

1

Se non si ottengono i dati remoti con file_get_contents, si può provare con cURL in quanto può fornire messaggi di errore su curl_error. Se non ricevi nulla, nemmeno nessun errore, qualcosa sul tuo server blocca le connessioni in uscita. Forse vuoi provare anche a curl su SSH. Non sono sicuro che ciò faccia la differenza, ma vale la pena provarlo. Se non si ottiene nulla si potrebbe prendere in considerazione di contattare l'amministratore del server (se non lo sei) o il provider.