根据文档
如果标头请求失败,应返回false。
然而,这个警告打破了我的代码:
警告:get_headers(http://ideone.com/)[function.get-headers]:无法打开 stream:php_network_getaddresses:getaddrinfo failed:名称或服务 不知道的 第 21 行 some.php
我想使用与此类似的代码测试给定的网址是否可用:
$res[$i] = (get_headers($temp[$i]) == false);
答案 0 :(得分:10)
我不认为这是一个doc bug;至少在内部,它使用通用实现来打开流到某个位置。
因此,当传递a)无效地址或b)无法访问的地址时,此函数将使用内部php_stream_open_wrapper_ex
抛出与其他所有函数相同的警告。
如果您要取消此警告,请在get_headers
之前添加@
:
$res[$i] = (@get_headers($temp[$i]) === false);
答案 1 :(得分:2)
您应该查看php man page of get_headers
上的第一条评论好像它按预期工作了。
因此,您必须禁用警告,或找到解决方法。
快速搜索后,我发现这可能对您有帮助post on phpfreaks。 在那里使用的解决方案是首先使用gethostbyname来解析服务器的IP地址,然后检索标头,如果它没有返回false。
或者更简单地说,在通话前使用@
禁用警告。 (请参阅Can I try/catch a warning?和php's error reporting page)