2016-02-03 9 views
5

Wie oben erwähnt, die PHP file_get_contents() Funktion oder sogar die fopen()/fread() Kombination stucks und Zeiten, wenn diese einfache Bild-URL zu lesen versuchen:PHP file_get_contents() erhalten beim Laden eines Bildes stecken

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

aber das gleiche Bild wird leicht von Browsern geladen, was ist der Haken?

EDITED:

wie in den Kommentaren aufgefordert, zeige ich die Funktion ich die Daten erhalten verwendet:

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; 
} 

ich diesen auch versucht einfach:

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

Beide geben Sie das gleiche Problem

EDITED:

$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"; 

das ist das Ergebnis:

Als ich curl verwendet in Kommentar vorgeschlagen

[DATA:] 

[CODE:0] 

[ERROR:] 
+0

Ist es fee_786_587_png oder fee_786_587.png? –

+0

Geben Sie den Code ein, den Sie ausprobiert haben. –

+0

ist es _png, genau wie in der URL erwähnt –

Antwort

1

Wenn Sie die Remote-Daten nicht mit file_get_contents erhalten, können Sie versuchen, es mit cURL, da es Fehlermeldungen auf curl_error geben kann. Wenn Sie nichts erhalten, auch keinen Fehler, blockiert etwas auf Ihrem Server ausgehende Verbindungen. Vielleicht möchten Sie sogar curl über SSH versuchen. Ich bin mir nicht sicher, ob das einen Unterschied macht, aber es ist den Versuch wert. Wenn Sie nichts erhalten, sollten Sie in Erwägung ziehen, sich an den Serveradministrator (falls Sie das nicht tun) oder an den Anbieter zu wenden.