PHPを使用してホスト名をIPアドレスに解決する方法を教えてください。ただし、別のネームサーバーを使用します(例: OpenDNS または Google Public DNS )。
dns_get_record()
またはgethostbyname()
は、システムに現在設定されているネームサーバー(TCP/IP設定または/etc/resolv.conf
)とは異なるネームサーバーを使用できるようには見えません。
私が見つけた唯一の方法はPEARクラスNet/DNSを使用することですが、PHP 5.4で多くの警告が表示されます
net_dns2 を試してください(これもPEARにあります)。
<?
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;
スクリプトからシェルスクリプトを実行することが許可されている場合は、システムの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
を使用してください。