如何防止fopen在尝试打开无效/不可达URI时引发警告

8

我正在使用fopen生成价格信息源。

if (($handle = fopen("http://feedurl", "r")) !== FALSE) {

}

如果RSS源失败了,有没有办法停止这个警告:

警告:fopen() [function.fopen]:php_network_getaddresses:getaddrinfo failed:Name or service not known in...

3个回答

18

您可以使用@来抑制警告:

if(($handle = @fopen("http://feedurl", "r")) !== FALSE){

}

这里适合使用,因为您已经适当地处理了错误条件。请注意,通常滥用@符号来抑制错误和警告是不明智的。

根据fopen的手册条目

如果打开失败,则会生成一个E_WARNING级别的错误。您可以使用@来抑制此警告。


谢谢Mark,这个很好用!我简直不敢相信在stackoverflow上提问会得到这么快的回复! - Regan Shepherd
它还会删除所有其他输出。 - Binary Mind

1
这是另一个可能的解决方案。
$file_name = "http://feedurl";
if (file_exists($file_name) === false) {
    return;
}
$handle = fopen($file_name, "r");

-2

或者你可以使用

error_reporting(E_ALL ^ E_WARNING);

1
你为什么想要在执行脚本中隐藏所有函数的警告? - Zach Rattner

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接