在 PHP 中下载 URL 的内容,即使它返回 404
2022-08-30 22:32:44
我想使用PHP下载URL的内容,即使HTTP响应代码是404。 会出错,我无法使用Google找到答案。我该怎么做?file_get_contents
我想使用PHP下载URL的内容,即使HTTP响应代码是404。 会出错,我无法使用Google找到答案。我该怎么做?file_get_contents
您必须将流包装器配置为忽略错误:
ignore_errors 即使在失败状态代码上获取内容。默认值为
boolean
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');
如果您还想获取响应标头,只需执行
print_r($http_response_header);
通话后。该变量在每次调用后使用 http 流包装器(重新)填充。
默认情况下,file_get_contents仅返回 HTTP 200 响应的内容。
从 PHP 5.0 开始,您还可以为 指定上下文,从而允许您在不依赖 url 的情况下执行此操作(请参阅 Gordon 的答案)。file_get_contents