ОШИБКА: 0 - php_network_getaddresses: getaddrinfo не удалось: имя или служба неизвестна - PullRequest
0 голосов
/ 09 июня 2018

У меня есть одна проблема .. Я использую эту функцию

public function check_ch($prt){

        $ip = "xx.xx.xx.xxx";
        $port = $prt;

       $fp = @fsockopen($site, $port, $errno, $errstr);
            if (!$fp)
              // return $port;
                return "ERROR: $errno - $errstr<br />\n";
            else
                return 1;

    }

, и я получил эту ошибку ..

ERROR: 0 - php_network_getaddresses: getaddrinfo failed: Name or service not known

Но только в PHP .. У меня есть некоторые функции в Pythonно там это работает.см. здесь:

SERVER1_CHANNEL_DICT = {
    1:{'key':11,'name':'Canal 1','ip':'xx.xx.xx.xxx','tcp_port':13431,'udp_port':13431,'state':STATE_NONE,},
    2:{'key':12,'name':'Canal 2','ip':'xx.xx.xx.xxx','tcp_port':13461,'udp_port':13461,'state':STATE_NONE,},
    3:{'key':13,'name':'Canal 3','ip':'xx.xx.xx.xxx','tcp_port':13491,'udp_port':13491,'state':STATE_NONE,},
    4:{'key':14,'name':'Canal 4','ip':'xx.xx.xx.xxx','tcp_port':13521,'udp_port':13521,'state':STATE_NONE,},
    5:{'key':15,'name':'Canal 5','ip':'xx.xx.xx.xxx','tcp_port':13551,'udp_port':13551,'state':STATE_NONE,},
    6:{'key':16,'name':'Canal 6','ip':'xx.xx.xx.xxx','tcp_port':13581,'udp_port':13581,'state':STATE_NONE,},
}

проверьте фотографии enter image description here

и я не знаю, почему в php не работает .. помогите мне, пожалуйста ..когда я вызываю функцию, я помещаю порт .. $ this-> check_ch (13431) ..

1 Ответ

0 голосов
/ 09 июня 2018

Логично для меня: fsockopen() первый аргумент $site не установлен.Я полагаю, это должно быть $ip вместо $site.Кстати, вы должны быть осторожны, так как fsockopen() возвращает ресурс, при проверке его возврата вы должны строго проверить.

public function check_ch($prt)
{
    $ip = "xx.xx.xx.xxx";

    $fp = @fsockopen($ip, $prt, $errno, $errstr);
    if ($fp === false) {
        // return $port;
        return "ERROR: $errno - $errstr<br />\n";
    } else {
        return 1;
    }
}

РЕДАКТИРОВАТЬ: Когда вы отключаете функцию с помощью @, если у вас возникла проблема, первое, что нужно сделать, - это заставить ее замолчать.У вас должен быть отчет о том, что $site не установлен, если он был отключен;)

...