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

Posted

技术标签:

【中文标题】尝试打开无效/无法访问的 URI 时如何阻止 fopen 触发警告【英文标题】:How to stop fopen from triggering warning when attempting to open an invalid/unreachable URI 【发布时间】:2011-07-12 02:21:25 【问题描述】:

我正在使用 fopen 生成价格馈送。

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


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

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

【问题讨论】:

【参考方案1】:

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

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


这很适合这里因为您正在适当地处理错误情况。请注意,通常不建议随意使用 @ 符号来抑制错误和警告。

根据manual entry for fopen

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

【讨论】:

谢谢马克,效果很好!我不敢相信人们对 *** 问题的反应速度如此之快! 它还会删除所有其他输出【参考方案2】:

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

$file_name = "http://feedurl";
if (file_exists($file_name) === false) 
    return;

$handle = fopen($file_name, "r");

【讨论】:

【参考方案3】:

或者你可以使用

error_reporting(E_ALL ^ E_WARNING);

【讨论】:

为什么要隐藏该脚本中执行的所有函数的所有警告?

以上是关于尝试打开无效/无法访问的 URI 时如何阻止 fopen 触发警告的主要内容,如果未能解决你的问题,请参考以下文章

Azure 前门:请求 URI 无效

Nuget包安装错误 - 无效的URI:无法解析权限/主机

无效的 URI:无法从很长的 url 解析授权/主机

无效的 URI:无法解析主机名。 Visual Studio 和 Chocolatey 安装问题

Google BigQuery/Cloud Storage 无效的源 uri 前缀错误

打开新的浏览器选项卡会使 Django 的 CSRF 令牌无效,从而阻止表单提交