我使用file_get_contents()访问一个URL。
file_get_contents('http://somenotrealurl.com/notrealpage');
如果URL不是真实的,它会返回这个错误信息。我怎样才能让它正常地出错,这样我就知道这个页面不存在,并在不显示这个错误信息的情况下采取相应的行动?
file_get_contents('http://somenotrealurl.com/notrealpage')
[function.file-get-contents]:
failed to open stream: HTTP request failed! HTTP/1.0 404 Not Found
in myphppage.php on line 3
例如,在zend中,你可以说:if ($request->isSuccessful())
$client = New Zend_Http_Client();
$client->setUri('http://someurl.com/somepage');
$request = $client->request();
if ($request->isSuccessful()) {
//do stuff with the result
}
8条答案
按热度按时间at0kjp5o1#
您需要检查HTTP response code:
mctunoxg2#
对于PHP中的这类命令,可以在其前面加上
@
来抑制这类警告。如果发生故障,file_get_contents()将返回
FALSE
,因此如果您检查返回的结果,就可以处理故障11dmarpk3#
每次使用http Package 器调用
file_get_contents
时,都会创建一个局部作用域中的变量:$http_response_header此变量包含所有HTTP头。此方法优于
get_headers()
函数,因为只执行一个请求。注意:两个不同的请求可能以不同的方式结束。例如,
get_headers()
将返回503,file_get_contents()将返回200。您将获得正确的输出,但由于get_headers()调用中的503错误而无法使用它。这种方法还允许您跟踪存储在不同变量中的几个请求头,因为如果您使用file_get_contents(),$http_response_header将在局部范围内被覆盖。
rggaifut4#
虽然
file_get_contents
非常简洁和方便,但我倾向于使用Curl库来实现更好的控制。2q5ifsrm5#
简单实用(易于在任何地方使用):
zvokhttg6#
为了避免Orbling对ynh的回答的重复请求,您可以合并他们的回答。如果您在第一时间得到有效的回答,请使用它。如果没有找到问题所在(如果需要)。
cig3rfwq7#
您可以将'ignore_errors' =〉true添加到选项中:
在这种情况下,您将能够从服务器读取响应。
laik7k3q8#
正常
赞成
权重级别