2010-08-21 4 views
13

Я пытаюсь использовать file_get_contents(), чтобы захватить щебет корма, однако я получаю следующее предупреждение:file_get_contents() не удалось открыть поток:

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

Мой код:

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

Я использую Google только для тестирования. allow_url_fopen включен в файле php.ini.

Любая идея, что может быть неправильным?

ответ

32

Вы должны использовать расширение PHP cURL, если оно доступно, так как оно во много раз быстрее, более мощное и легкое для отладки. Вот пример, который делает то же самое вы пытаетесь:

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

Это также намного проще в отладке, так как вы можете получить его, чтобы сбросить запрос и заголовки отправляемые им (деформированные запросы, обычная причина HTTP 400 ошибок) –

+1

http://stackoverflow.com/questions/ 555523/file-get-contents-vs-curl-what-have-better-performance –

+0

Да, примерно в 4-5 раз быстрее. –

0

Скорее всего, ваш сервер включена mod_security. Добавьте ниже строки в свой .htaccess после любых существующих правил, а затем попытайтесь увидеть, что проблема все еще существует после этого добавления.

<IfModule mod_security.c> 
SecFilterScanPost 
</IfModule> 
Смежные вопросы