php dns_get_records(host, type) возвращает false с type=DNS_ALL, но возвращает записи DNS с DNS_TXT или DNS_A

Что исследуя неисправность в плагине WordPress, я заметил, что

      $records = @dns_get_record( $host, DNS_ALL );

возвращает пустой массив.

      $records = @dns_get_record( $host, DNS_A + DNS_TXT );

возвращает массив, который мне нужен.

Тем не менее, я до сих пор не понимаю, почему это произошло, и я хочу убедиться, что никому больше не придется тратить несколько часов на отладку из-за этой проблемы.

Вещи, которые я пробовал до сих пор:

  • Я удалил знак @, чтобы разрешить ошибки и предупреждения, однако я не обнаружил ни сообщений об ошибках, ни исключений.
  • Я попробовал DNS_ANY (по умолчанию), и это не привело к созданию массива записей.
  • Проблема, похоже, на сервере, на котором размещено приложение. Например, при запуске dns_get_record("google.com") я получаю массив с 19 записями.

Любая идея, почему это произошло или где искать потенциальные ошибки?

Предложения из комментариев:

  • @AbraCadaver говорит, что DNS_ALL инициирует передачу зоны, которая обычно ограничивается только между первичным и вторичным серверами и т. д.
  • @ patrick-mevzek: указал на документацию, в которой говорится, что libresolv не может быть реализован между платформами и что DNS_ALL медленнее, чем DNS_ANY, но более надежен.
  • @MarkusZeller подозревает некоторые ограничения со стороны провайдера веб-хостинга.
  • Брандмауэр может ограничивать TCP или UDP на порту 53.
  • Хост блокирует DNS_ANY и DNS_ALL.

Ссылки по теме:

0 ответов

Другие вопросы по тегам