PHP 5.3改变了file_get_contents的工作方式吗?

cee*_*yoz 3 php file-get-contents

PHP有一个奇怪的问题file_get_contents.

过去,file_get_contents无论返回的HTTP状态代码如何,在远程文件上都会返回该文件的文本.如果我点击API并且它发回状态为500的JSON错误信息,则file_get_contents给我JSON(没有迹象表明遇到了错误代码).

我刚刚建立了一个Ubuntu 10.04服务器,这是第一个拥有PHP 5.3的Ubuntu.当出现500错误时,PHP会抛出警告,而不是给我JSON.因此,我无法解析JSON并提供一个很好的错误消息.

很高兴PHP注意到远程文件中存在错误,但是如果出现500错误,我甚至需要 JSON(特别是!).似乎没有办法将其关闭.有没有遇到过这个?有小费吗?

sal*_*the 8

file_get_contents通过提供适当的流上下文(使用stream_context_create)并将ignore_errors选项设置为,可以告诉PHP在使用时忽略流错误true.

$context = stream_context_create(array('http'=>array('ignore_errors'=>true)));
$contents = file_get_contents($url, FALSE, $context);
Run Code Online (Sandbox Code Playgroud)

您还可以查看$http_response_header响应标头,包括状态代码.