下载PHP中URL的内容,即使它返回404

下载PHP中URL的内容,即使它返回404,php,http-status-code-404,Php,Http Status Code 404,我想使用PHP下载URL的内容,即使HTTP响应代码是404file\u get\u contents将出错,我无法使用谷歌找到答案。如何执行此操作?默认情况下仅返回HTTP 200响应的内容 从PHP5.0开始,您还可以为文件获取内容指定一个上下文,这样您就不必依赖url(参见Gordon的答案)。改用。它允许更大的控制,并允许您读取检索到的任何内容和状态代码。您必须忽略错误: 忽略\u错误布尔值即使在出现故障状态代码时也会获取内容。默认值为FALSE 换言之,你要做什么 echo file

我想使用PHP下载URL的内容,即使HTTP响应代码是404
file\u get\u contents
将出错,我无法使用谷歌找到答案。如何执行此操作?

默认情况下仅返回HTTP 200响应的内容

从PHP5.0开始,您还可以为
文件获取内容
指定一个上下文,这样您就不必依赖url(参见Gordon的答案)。

改用。它允许更大的控制,并允许您读取检索到的任何内容和状态代码。

您必须忽略错误:

忽略\u错误
布尔值
即使在出现故障状态代码时也会获取内容。默认值为
FALSE

换言之,你要做什么

echo file_get_contents(
    'http://stackoverflow.com/foo/bar',
    false,
    stream_context_create([
        'http' => [
            'ignore_errors' => true,
        ],
    ])
);
您将获得404页面

如果希望这是HTTP流的默认行为,请使用

stream_context_set_default(
    array('http' => array(
        'ignore_errors' => true)
    )
);
使用HTTP流包装器的任何调用都将使用这些设置,例如,您只需

echo file_get_contents('http://stackoverflow.com/foo/bar');
如果你还想得到那份工作,那就去做吧


电话之后。每次调用后,使用http流包装器(重新)填充变量。

步骤1:检查返回代码:
$content=file\u get\u contents(“网站链接”);
如果($content==FALSE){//handleerror here…}


步骤2:通过将错误控制操作符(即
@
)放在对file_get_contents()的调用前面来抑制警告:
$content=@file_get_contents($site)

有趣的方法-但是你能告诉我你是得到了一个错误还是一个成功的响应吗?+1 Gordon是对的,变量$http\u response\u头包含了它在tin上所说的内容,其中显然包含了状态代码。
print_r($http_response_header);