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


How to stop fopen from triggering warning when attempting to open an invalid/unreachable URI

我使用fopen来生成价格提要。

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

如果提要失败,是否有办法停止此警告:

警告: fopen() [function。[/p]: php_network_getaddresses: getaddrinfo failed: Name or service not known in…

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

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

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

根据fopen的手动条目:

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

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

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

或者使用

error_reporting(E_ALL ^ E_WARNING);