web-dev-qa-db-ja.com

別のネームサーバーを使用してPHP)のホスト名を解決します

PHPを使用してホスト名をIPアドレスに解決する方法を教えてください。ただし、別のネームサーバーを使用します(例: OpenDNS または Google Public DNS )。

dns_get_record()またはgethostbyname()は、システムに現在設定されているネームサーバー(TCP/IP設定または/etc/resolv.conf)とは異なるネームサーバーを使用できるようには見えません。

私が見つけた唯一の方法はPEARクラスNet/DNSを使用することですが、PHP 5.4で多くの警告が表示されます

15
Nick

net_dns2 を試してください(これもPEARにあります)。

7
Sandman4
<?
require_once 'Net/DNS2.php';

$resolver = new Net_DNS2_Resolver( array('nameservers' => array('208.67.222.123')) );

$resp = $resolver->query("hooktube.com.", 'A');

print_r($resp);

echo $resp->answer[0]->address;
10
Nick

スクリプトからシェルスクリプトを実行することが許可されている場合は、システムのnslookupコマンドを使用できます。

$Host = 'stackoverflow.com';
$dns = '8.8.8.8';  // Google Public DNS

$ip = `nslookup $Host $dns`; // the backticks execute the command in the Shell

$ips = array();
if(preg_match_all('/Address: ((?:\d{1,3}\.){3}\d{1,3})/', $ip, $match) > 0){
    $ips = $match[1];
}

print_r($ips);

注:$Host$dnsがユーザー入力からのものである場合は、escapeshellargを使用してください。

6
Rocket Hazmat