防止php_network_getaddresses:getaddrinfo失败:

时间:2014-10-15 08:51:54

标签: php fopen getaddrinfo

我正在尝试使用PHP调用URL以检查它是否存在且可以访问。

我的初始代码是

fopen('http://'.$this -> url, 'r');

但每次URL无法访问时,它都会抛出以下错误:

fopen(http://dwzegdzgwedzgew.com): failed to open stream: php_network_getaddresses: getaddrinfo failed
php_network_getaddresses: getaddrinfo failed:

在这种情况下会忽略错误运算符(@),因为fopen本身并没有在解析asdress时抛出错误。所以我认为应该这样做:

 @fopen(@'http://'.$this -> url, 'r');

但它也会继续抛出错误。

在打开之前检查PHP中是否存在URL,是否存在非错误抛出的可能性?

1 个答案:

答案 0 :(得分:1)

$ressource = @fopen('http://' . $this->url, 'r');的错误消息是什么?

<?php


$urls = array('kihgkighuhgkig.li', 'google.com', 'adsfafdf.fr');
foreach ($urls as $url)
{
    if (gethostbyname($url) != $url)
    {
        $ressource = fopen('http://' . $url, 'r');
        var_dump($url, $ressource);
    }
}

输出结果为:

$> php test.php
string(10) "google.com"
resource(6) of type (stream)