如何在尝试打开无效/无法访问的URI时停止fopen触发警告

时间:2011-07-12 02:21:26

标签: php

我正在使用fopen生成价格Feed。

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

}

如果Feed失败,有没有办法停止此警告:

  

警告:fopen()[function.fopen]:php_network_getaddresses:getaddrinfo failed:名称或服务未知......

3 个答案:

答案 0 :(得分:14)

您可以使用@来取消警告:

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

}

这在中是合适的,因为您正在适当地处理错误条件。请注意,一般来说,自由使用@符号来抑制错误和警告是不明智的。

根据manual entry for fopen

  

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

答案 1 :(得分:1)

这是另一种可能的解决方案

$file_name = "http://feedurl";
if (file_exists($file_name) === false) {
    return;
}
$handle = fopen($file_name, "r");

答案 2 :(得分:-2)

或者您可以使用

error_reporting(E_ALL ^ E_WARNING);