Php get_headers会抛出警告而不是返回false?

Php get_headers会抛出警告而不是返回false?,php,Php,根据文件 如果标头请求失败,则应返回false 但是,它正在破坏我的代码,并警告: 警告:get_headers()[函数.get headers]:无法打开 流:php\u network\u getaddresses:getaddrinfo失败:名称或服务 不为人知 第21行的some.php 我想使用类似以下代码测试给定url是否可用: $res[$i] = (get_headers($temp[$i]) == false); 你应该看看第一条评论 它似乎在按预期工作 因此,您必须禁用

根据文件

如果标头请求失败,则应返回false

但是,它正在破坏我的代码,并警告:

警告:get_headers()[函数.get headers]:无法打开 流:php\u network\u getaddresses:getaddrinfo失败:名称或服务 不为人知 第21行的some.php

我想使用类似以下代码测试给定url是否可用:

$res[$i] = (get_headers($temp[$i]) == false);

你应该看看第一条评论

它似乎在按预期工作

因此,您必须禁用警告,或者找到解决方法

在快速搜索之后,我发现这个可能对你有帮助。 这里使用的解决方案是首先解析服务器的IP地址,如果不返回false,则检索头


或者更简单地说,在通话前使用
@
禁用警告。(参见和)

我不认为这是一个文档错误;至少在内部,它使用公共实现将流打开到某个位置

因此,当传递a)无效地址或b)无法访问的地址时,此函数将像其他使用内部
php\u stream\u open\u wrapper\u ex
的函数一样抛出相同的警告

如果要抑制此警告,请在
get_headers
前面加上
@

$res[$i] = (@get_headers($temp[$i]) === false);

这也是第一条评论所说的。手册页面的其余部分并没有反驳这一点,对于较低级别的错误(这里是:DNS解析)也并非完全意外。这是抱怨还是问题?@OneTrickPony是的。CURL使用libcurl,这自然不会影响PHP的任何错误处理。如果它只是向您发出警告,我看不出您为什么不能这样做。有关此
@
的更多信息,请参阅。