根据文档
如果标头请求失败,则应返回 false。
但是,它破坏了我的代码,带有以下警告:
警告:get_headers(http://ideone.com/)[function.get-headers]:未能打开流:php_network_getaddresses:getaddrinfo 失败:名称或服务 在第21行的some.php中未知
我想使用类似于以下的代码来测试给定的 url 是否可用:
$res[$i] = (get_headers($temp[$i]) == false);
根据文档
如果标头请求失败,则应返回 false。
但是,它破坏了我的代码,带有以下警告:
警告:get_headers(http://ideone.com/)[function.get-headers]:未能打开流:php_network_getaddresses:getaddrinfo 失败:名称或服务 在第21行的some.php中未知
我想使用类似于以下的代码来测试给定的 url 是否可用:
$res[$i] = (get_headers($temp[$i]) == false);
我不认为这是一个文档错误;至少在内部,它使用通用实现将流打开到某个位置。
因此php_stream_open_wrapper_ex,当传递 a) 无效地址或 b) 无法访问的地址时,此函数将像使用 internal 的所有其他函数一样抛出相同的警告。
如果要禁止显示此警告,请在前面get_headers加上@:
$res[$i] = (@get_headers($temp[$i]) === false);
你应该看看get_headers 的 php 手册页上的第一条评论
似乎它按预期工作。
因此,您必须禁用警告,或者找到解决方法。
快速搜索后,我在 phpfreaks 上找到了这篇可能对您有所帮助的帖子。那里使用的解决方案是首先使用gethostbyname来解析服务器的 IP 地址,然后如果它不返回 false 则检索标头。
@或者更简单地说,在调用之前使用 an 禁用警告。(见Can I try/catch a warning?和php 的错误报告页面)