2009-08-18 2 views
2

Запуск PHP 5.2 на Linux, я запускаю ряд запросов с dns_get_record(). Из документации видно, что эта функция реплицирует , но я вижу несоответствия. Моя цель - получить первичный и вторичный серверы имен, которые являются авторитетными для доменов, к которым принадлежит каждое имя хоста.PHP5: dns_get_record() возвращает только записи для поддоменов

dns_get_record('example.com', DNS_NS); возвращает хорошие результаты. dns_get_record('www.example.com', DNS_NS); ничего не возвращает. dns_get_record('www.example.com', DNS_ANY); возвращает только A-запись. dns_get_record('www.example.com', DNS_SOA); ничего не возвращает.

Однако из командной строки с помощью рыть, я всегда могу получить по крайней мере SOA:

dig www.example.com NS или dig www.example.com SOA

возвращение действительный AUTHORITY SECTION (IN SOA), содержащий серверы имен.

Как я могу воспроизвести это на PHP? Я пробовал модуль PEAR Net_DNS и видел похожие махинации, как с dns_get_record().

+1

Как вы знаете, что 'dig' не просто срывает« www.' перед выполнением запросов NS или SOA? –

+0

Я полагаю, я не знаю, что это не так. – brianjcohen

+0

Шон Яркий (почти) правильный. Используйте опцию «+ trace» с помощью dig, чтобы узнать, что происходит на самом деле: Dig будет идти из верхней иерархии и работать вниз (не наоборот) - обычно вы не настраиваете SOA под поддоменом " WWW». PHP dns_get_record - это _not_ dig, он просто сделает то, что вы ему скажите. – lifeofguenter

ответ

1

Когда вы из командной строки, вы гораздо более прямо (относительно) подключаетесь к DNS. Результат также отформатирован для этого сценария. При выполнении функции php она возвращает значения, которые, по мнению авторов, будут нужны. Не обязательно непосредственно соответствует .

Если вы хотите получить результат , вы можете использовать exec('dig www.example.com ns'); и проанализировать его как результат.

Кроме того, если вы запрашиваете DNS для субдомена, то есть www. а не tld (example.com), то вы не собираетесь получать другие записи, связанные с ним, вы ТОЛЬКО собираете результаты, связанные с этим поддоменом, который в вашем случае является только записью A.

Смежные вопросы