尽管HTTP错误,使file_get_contents()返回服务器响应

时间:2013-08-22 09:07:38

标签: php http facebook-graph-api

如果使用file_get_contents()连接到Facebook,

$response = file_get_contents("https://graph.facebook.com/...?access_token=***");
echo "Response: ($response)\n";

服务器返回非正常HTTP状态,PHP提供一般错误响应,并禁止响应。返回的身体是空的。

file_get_contents(...): failed to open stream: HTTP/1.0 400 Bad Request
Response: ()

但是如果我们使用cURL,我们会看到Facebook实际上会返回一个有用的响应主体:

{"error":{"message":"An active access...","type":"OAuthException","code":2500}}

如何使file_get_contents()返回响应主体而不管HTTP错误?

2 个答案:

答案 0 :(得分:8)

您必须使用stream_context_create()

$ctx = stream_context_create(array(
    'http' => array (
        'ignore_errors' => TRUE
     )
));


file_get_contents($url, FALSE, $ctx);

答案 1 :(得分:1)

您可以忽略错误file_get_contents throws

$opts = array(
  'http'=>array(
    'ignore_errors'=> true,
  )
);

$context = stream_context_create($opts);
$file = file_get_contents('https://graph.facebook.com/...?access_token=***', false, $context);

var_dump($file);