この関数は、連想配列を要素にもつ配列を返します。それぞれの連想配列には 少なくとも 以下のキーが含まれています:
表 1. 基本 DNS 属性
属性 | 意味 |
---|---|
host | これ以降の関連するデータが参照する DNS 名。 |
class | dns_get_record() は Internet クラスの レコードのみを返すので、このパラメータは常に IN を返します。 |
type | レコード型を表す文字列。type の値に応じて、結果の配列には 追加の属性が含まれます。以下の表を参照ください。 |
ttl | このレコードの有効期限。レコードの本来の ttl と一致するとは 限りません。むしろ、ネームサーバへの クエリにかかった時間をそこから引いたものに一致します。 |
hostname は、正しい DNS ホスト名、すなわち "www.example.com" のようなものでなければなりません。 in-addr.arpa 形式の表記を用いた逆引き検索は可能ですが、 たいていは gethostbyaddr() を用いるほうが適当です。
デフォルトでは、dns_get_record() は hostname に関連するすべてのリソースレコードを 検索します。これを制限するには、オプションの type パラメータを指定してください。 type は以下のうちのいずれかです。 DNS_A, DNS_CNAME, DNS_HINFO, DNS_MX, DNS_NS, DNS_PTR, DNS_SOA, DNS_TXT, DNS_AAAA, DNS_SRV, DNS_NAPTR, DNS_A6, DNS_ALL or DNS_ANY 。 デフォルトは DNS_ANY です。
注意: プラットフォーム依存の libresolv のおかしな挙動のせいで、 DNS_ANY が常にすべてのレコードを返すとは 限りません。速度は遅くなりますが、DNS_ALL のほうがより確実にすべてのレコードを取得できます。
3 番目、4 番目のオプションの引数 authns と addtl はリファレンスで渡され、もし指定された場合はそこにそれぞれ Authoritative Name Servers, と Additional Records が格納されます。 下の例を参照ください。
表 2. 'type' に応じて連想配列に追加される項目
レコード型 | 追加項目 |
---|---|
A | ip: ドット区切り 10 進数形式の IPv4 アドレス。 |
MX | pri: メールエクスチェンジャの優先度。 数字が小さいほど優先度が高い。 target: メールエクスチェンジャの FQDN 。 dns_get_mx() も参照ください。 |
CNAME | target: レコードのエイリアスの対象となっている 場所の FQDN 。 |
NS | target: このホスト名に対する権威をもっている ネームサーバの FQDN 。 |
PTR | target: レコードが指している、DNS 名前空間内の場所 |
TXT | txt: このレコードに関連付けられている任意の文字列。 |
HINFO | cpu: このレコードが参照しているマシンの CPU を 識別する IANA 番号。 os: このレコードが参照しているマシン上の OS を 識別する IANA 番号。 これらの値の意味については、IANA の Operating System Names を参照ください。 |
SOA | mname: リソースレコードの元となるマシンの FQDN 。 rname: このドメインの管理責任者の Email アドレス。 serial: ドメインのシリアル番号。 refresh: セカンダリネームサーバがこのドメインの コピーを更新する際に参照するリフレッシュ間隔(秒単位)。 retry: リフレッシュが失敗した際に 2 度目の リフレッシュを試みるまでの間隔(秒単位) expire: セカンダリネームサーバが、ゾーンデータの リフレッシュに失敗した場合にコピーのデータを破棄せず持ち続ける期間 (秒単位)。 minimum-ttl: クライアントが、一度取得したデータを 再リクエストすることなしに利用できる最小期間(秒単位)。個々の リソースレコードによって上書きが可能。 |
AAAA | ipv6: IPv6 アドレス。 |
A6(PHP >= 5.1.0) | masklen: chain で指定された対象から引き継ぐビット長。 ipv6: chain と マージするためのこのレコードのアドレス。 chain: ipv6 データと マージするための親レコード。 |
SRV | pri: (Priority) 値が小さいものが優先されます。 weight: 同じ優先順位の targets からランダムに選択する際の重み。 target および port: リクエストされたサービスが存在するホスト名とポート。 詳細は RFC 2782 を参照ください。 |
NAPTR | order および pref: 上の pri および weight と同じ。 flags, services, regex, および replacement: RFC 2915 で定義されるパラメータ。 |
注意: DNS の標準規格により、メールアドレスは user.host 形式で渡されます (たとえば、hostmaster.example.com が hostmaster@example.com の代わりとなります)。 この値をしっかり確認し、mail() のような関数で 利用する前には必要なら変更を加えることを忘れないようにしてください。
MX レコードが解決されれば、たいていはメールサーバの IP アドレスを 取得したくなるものです。そのため、dns_get_record() は addtl に関連するレコードを含めて返します。 また、authns には権威のあるネームサーバの リストを含めて返します。
例 2. dns_get_record() と DNS_ANY の使用
上の例の出力は例えば以下のようになります:
|
dns_get_mx() および dns_check_record() も参照ください。