2010-11-09 4 views

ответ

16

Любая функция, которая использует HTTP оболочку для доступа к удаленному файлу, как если бы это были местные автоматически генерировать локальную переменную с именем $http_response_header в локальной области видимости. Вы можете получить доступ к этой переменной, чтобы найти информацию о том, что произошло при вызове fopen, file_get_contents ... в удаленном файле.

Вы можете подавить предупреждение с помощью @: @file_get_contents.

Если вы не заботитесь о том, что ошибка была, вы можете использовать @file_get_contents и сравнить результат false:

$content = @file_get_contents(url); 
if ($content === false) { /* failure */ } else { /* success */ } 
+0

То, что мне нужно, спасибо! –

6

Вы можете сделать дополнительный (голова) запрос, чтобы выяснить, первый, например,

$response = get_headers($url); 
if($response[1] === 'HTTP/1.1 200 OK') { 
    $content = file_get_contents($url); 
} 

Или вы можете сказать file_get_contents игнорировать все ошибки и принудительно принести результат $url путем изменения контекста потока:

echo file_get_contents(
    'http://www.example.com/foo.html', 
    FALSE, 
    stream_context_create(array('http'=>array('ignore_errors' => TRUE))) 
) 
Смежные вопросы