2010-11-09 61 views

回答

16

任何使用HTTP包裝器訪問遠程文件的函數,就好像它是本地的,將自動生成本地作用域中名爲$http_response_header的局部變量。您可以訪問該變量以查找有關在遠程文件上調用fopenfile_get_contents ...時發生的情況的信息。

您可以使用@來抑制警告:@file_get_contents

如果你不關心是什麼錯誤,你可以使用@file_get_contents,並將結果false比較:

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

正是我需要的,謝謝! – 2016-02-15 01:32:30

6

你可以做一個額外的(HEAD)的要求,找出第一,例如

$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))) 
)