2010-08-21 4 views
13

J'essaie d'utiliser file_get_contents() pour saisir un flux twitter, mais je reçois l'avertissement suivant:file_get_contents() failed to open stream:

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

Mon code:

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

J'utilise Google juste pour le plaisir de tester. allow_url_fopen est activé dans mon fichier php.ini.

Une idée de ce qui pourrait être faux?

Répondre

32

Vous devriez utiliser l'extension PHP cURL si elle est disponible, car elle est beaucoup plus rapide, plus puissante et plus facile à déboguer. Voici un exemple qui fait la même chose que vous essayiez:

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

Il est aussi beaucoup plus facile à déboguer, puisque vous pouvez l'obtenir pour vider la demande et en-têtes qu'il envoie (requêtes malformées étant la cause habituelle des erreurs HTTP 400) –

+1

http://stackoverflow.com/questions/ 555523/file-get-contents-vs-curl-ce-qui-a-mieux-performance –

+0

Oui, environ 4-5 fois plus vite. –

0

Très probablement, votre serveur ont mod_security activé. Ajouter les lignes ci-dessous dans votre. Htaccess après toutes les règles existantes et ensuite essayer de voir le problème est toujours là, après cette addition.

<IfModule mod_security.c> 
SecFilterScanPost 
</IfModule> 
Questions connexes