2010-08-21 10 views
13

Ich versuche file_get_contents() zu verwenden, um ein Twitter-Feed zu packen, aber ich die folgende Warnung erhalten:file_get_contents() failed to open stream:

failed to open stream: HTTP request failed! HTTP/1.1 400 Bad Request 

Mein Code:

$feed = 'http://twitter.com/statuses/user_timeline.rss?screen_name=google&count=6'; 
$tweets = file_get_contents($feed); 

Ich verwende Google nur zum Testen. allow_url_fopen ist in meiner php.ini Datei aktiviert.

Irgendeine Idee, was könnte falsch sein?

Antwort

32

Sie sollten die Erweiterung PHP cURL verwenden, wenn sie verfügbar ist, da sie um ein Vielfaches schneller, leistungsfähiger und einfacher zu debuggen ist. Hier ist ein Beispiel, das die gleiche Sache tun Sie versuchen:

function curl($url) { 
    $ch = curl_init(); 
    curl_setopt($ch, CURLOPT_URL, $url); 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER,1); 
    $data = curl_exec($ch); 
    curl_close($ch); 

    return $data; 
} 

$feed = 'http://twitter.com/statuses/user_timeline.rss?screen_name=google&count=6'; 
$tweets = curl($feed); 
+0

Es ist auch viel einfacher zu debuggen, da Sie ihm die Anfrage und Header-Dump erhalten können (ungültige Anforderungen sind die übliche Ursache von HTTP-400-Fehlern) –

+1

sendet http://stackoverflow.com/questions/ 555523/file-get-contents-vs-curl-was-hat-besser-performance –

+0

Ja, etwa 4-5 mal schneller. –

0

Wahrscheinlich Ihr Server mod_security aktiviert. Fügen Sie die folgenden Zeilen in Ihrem .htaccess nach vorhandenen Regeln hinzu und versuchen Sie dann zu sehen, dass das Problem nach dem Hinzufügen weiterhin besteht.

<IfModule mod_security.c> 
SecFilterScanPost 
</IfModule> 
Verwandte Themen