2009-08-18 6 views
2

En cours d'exécution de PHP 5.2 sous Linux, j'exécute une série de requêtes avec dns_get_record(). Il semblerait de la documentation que cette fonction réplique mais je vois des incohérences. Mon objectif est d'obtenir les serveurs de noms principaux et secondaires qui font autorité pour les domaines auxquels appartient chaque nom d'hôte.PHP5: dns_get_record() ne renvoie que les enregistrements A pour les sous-domaines

dns_get_record('example.com', DNS_NS); renvoie de bons résultats. dns_get_record('www.example.com', DNS_NS); ne renvoie rien. dns_get_record('www.example.com', DNS_ANY); renvoie uniquement un enregistrement A. dns_get_record('www.example.com', DNS_SOA); ne renvoie rien.

Cependant, à partir d'une ligne de commande à l'aide dig, je peux toujours obtenir au moins la SOA:

dig www.example.com NS ou dig www.example.com SOA

retour une section autorité valide (SOA) contenant les serveurs de noms.

Comment puis-je répliquer ceci en PHP? J'ai essayé le module PEAR Net_DNS et vu des manigances similaires avec dns_get_record().

+1

Comment savez-vous que 'dig' ne se contente pas d'enlever le' www.' avant de faire les requêtes NS ou SOA? –

+0

Je suppose que je ne sais pas ce n'est pas. – brianjcohen

+0

Sean Bright est (presque) correct. Utilisez l'option "+ trace" avec dig pour voir ce qui se passe vraiment: Dig ira de la hiérarchie supérieure et descendra (pas l'inverse) - en général, vous ne configurez pas de SOA sous le sous-domaine " www ". PHP's dns_get_record est _not_ dig, il fera juste ce que vous lui dites de faire. – lifeofguenter

Répondre

1

Lorsque vous à partir de la ligne de commande, vous vous connectez beaucoup plus directement (relativement) au DNS. La sortie est également formatée pour ce scénario. Lors de l'exécution de la fonction php, elle renvoie les valeurs que ses auteurs pensaient souhaitables. Ne correspond pas nécessairement directement à .

Si vous souhaitez obtenir un résultat , vous pouvez utiliser exec('dig www.example.com ns'); et analyser cette sortie comme vous le souhaitez.

De même, si vous interrogez le DNS pour un sous-domaine, c'est-à-dire www. Plutôt que le tld (exemple.com), vous n'obtiendrez pas les autres enregistrements associés - vous obtiendrez UNIQUEMENT les résultats associés à ce sous-domaine, ce qui dans votre cas est juste un enregistrement A.

Questions connexes