0

PHPを使用してCNAMEレコードのリストを取得しようとしています。

このメソッドは、古いWindows 7マシンでコードをホストしていたときに機能していましたが、Ubuntuマシン(同様のAMPスタックセットアップ)に移動したため、のCNAMEレコードが返されなくなりました$url。コードをWindowsサーバーにアップロードしましたが、まだCNAMEレコードがありません。

$records['cname'] = dns_get_record($url, DNS_CNAME);

OSが何かに関係していると主張しているわけではありません。おそらく、古いマシンに特定の方法でこれを機能させる何かを設定していたのかもしれません。現在、単純な空の配列を返しますが、以前はDNS管理サービスにあったものと一致するCNAMEレコードのリストを返していました。私はここの記事を読みました:

CNAMEが存在することがわかっているのに、dns_get_recordにCNAMEが表示されないのはなぜですか?

そして、次のコードを使用して、PearのNetDns2ライブラリで機能を実装しようとすることになりました。それでも、answer応答の配列は空です。問題がget_dns_recordからNetDNS2まで同じであるかどうか、または両方の場合で間違ったことをしているのかどうかはわかりませんが、テストされたサイトには、とを含むCNAMEレコードが確実にgoogle.comありyahoo.comます。

//using Google Name Server
$rslvr = new Net_DNS2_Resolver(array('nameservers' => array('8.8.8.8')));
$records['cname'] = $rslvr->query($url, 'CNAME');

どんな助けでもありがたいです、最終目標は私が私の古いマシンにいたようにCNAMEレコードのリストを取得できるようにすることです。

4

1 に答える 1

1

ここではPHP5.4.9で動作します。

最初のレコード(cweiske.de)はCNAME、IPアドレスを直接指しているだけです。

php > var_dump(dns_get_record('cweiske.de', DNS_CNAME));
array(0) {
}

2番目は実際には最初のレコードのCNAMEです。

php > var_dump(dns_get_record('www.cweiske.de', DNS_CNAME));
array(1) {
  [0] =>
  array(5) {
    'host' =>
    string(14) "www.cweiske.de"
    'class' =>
    string(2) "IN"
    'ttl' =>
    int(86400)
    'type' =>
    string(5) "CNAME"
    'target' =>
    string(10) "cweiske.de"
  }
}

dig同じことを示しています:

$ dig cweiske.de
cweiske.de.     577 IN  A   83.169.7.198

$ dig www.cweiske.de
www.cweiske.de.     86397   IN  CNAME   cweiske.de.
cweiske.de.     597 IN  A   83.169.7.198

それがあなた自身またはPHPの問題であるかどうかを確認するには、digまたはnslookupを使用してテストします。

于 2013-01-23T21:16:20.483 に答える