7

根据文档

获取标题

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

但是,它破坏了我的代码,带有以下警告:

警告:get_headers(http://ideone.com/)[function.get-headers]:未能打开流:php_network_getaddresses:getaddrinfo 失败:名称或服务 在第21行的some.php中未知

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

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

2 回答 2

10

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

因此php_stream_open_wrapper_ex,当传递 a) 无效地址或 b) 无法访问的地址时,此函数将像使用 internal 的所有其他函数一样抛出相同的警告。

如果要禁止显示此警告,请在前面get_headers加上@

$res[$i] = (@get_headers($temp[$i]) === false);
于 2013-06-17T18:45:20.807 回答
2

你应该看看get_headers 的 php 手册页上的第一条评论

似乎它按预期工作。

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

快速搜索后,我在 phpfreaks 上找到了这篇可能对您有所帮助的帖子。那里使用的解决方案是首先使用gethostbyname来解析服务器的 IP 地址,然后如果它不返回 false 则检索标头。

@或者更简单地说,在调用之前使用 an 禁用警告。(见Can I try/catch a warning?php 的错误报告页面

于 2013-06-17T18:42:39.513 回答