Раздел вопрос-ответ dns_get_record падает с ошибкой A temporary server error occurred.

Функция dns_get_record падает с ошибкой A temporary server error occurred.

php -r "var_dump(dns_get_record('toptanmama.com', DNS_NS));"
PHP Warning:  dns_get_record(): A temporary server error occurred. in Command line code on line 1
bool(false)
share

1 ответ

По документации функция dns_get_record возвращает false если не удалось получить данные либо массив с dns-данными.

функция возвращает массив ассоциативных массивов, или FALSE в случае возникновения ошибки.

Если ответ не получен, на некоторых серверах dns_get_record может вызывать ошибку уровня E_WARNING.

Чтобы убедиться в том, что функция dns_get_record может вызывать ошибку, можно заглянуть в исходный СИ`шный код функции dns_get_record. E_WARNING возникает, когда нам не удалось получить dns по каким то непонятным причинам.

Ошибки могут быть следующими:

  • An unexpected server failure occurred.
  • A temporary server error occurred.
  • DNS Query failed

Чтобы исправить ошибку A temporary server error occurred, нужно либо подавлять все ошибки собачкой @dns_get_record либо ловить exception, например так:

try {
	$dns = dns_get_record($domain, DNS_A);
}
catch (Exception $e) {
	if ($e->getMessage() !== 'dns_get_record(): A temporary server error occurred.') {
		throw $e;
	}
	$dns = false;
}

Интересно, что ошибка может воспроизводиться на одном сервере и не воспроизводиться на другом. При этом в /etc/resolv.conf записаны абсолютно одинаковые хосты.

Добавить комментарий
    как минимум 5 символов

    icon Вход в систему

    зарегистрироваться