Zum Inhalt springen

PHP dns_get_mx()-Funktion: Alles, was Sie wissen müssen

Als PHP-Entwickler müssen Sie möglicherweise die Mail Exchange (MX)-Records für einen Domainnamen abrufen. Die Funktion dns_get_mx() wurde früher hierfür verwendet, ist jedoch in PHP 8.2 entfernt worden. Der moderne Ansatz verwendet dns_get_record() mit dem Flag DNS_MX. In diesem Artikel behandeln wir die veraltete Funktion, ihre Veraltung und wie Sie die empfohlene Alternative verwenden.

Was ist die Funktion dns_get_mx()?

Die Funktion dns_get_mx() war eine integrierte PHP-Funktion, die Mail Exchange (MX)-Records für einen angegebenen Domainnamen abruft und ein nach Priorität sortiertes Array zurückgibt. Sie wurde in PHP 8.2 entfernt. Die empfohlene Alternative ist dns_get_record($hostname, DNS_MX).

So verwenden Sie die Funktion dns_get_mx()

Die veraltete Syntax lautet: Syntax von dns_get_mx()

php
dns_get_mx($hostname, &$mxhosts, &$weight);

Die Funktion erwartet drei Parameter:

  • $hostname: Der Domainname, für den Sie die MX-Records abrufen möchten.
  • $mxhosts: Eine Referenzvariable, die die MX-Hosts für die Domain speichert.
  • $weight: Eine Referenzvariable, die die Prioritätsgewichtungen speichert.

Hier ist ein Beispiel dafür, wie Sie die moderne Funktion dns_get_record() zum Abrufen von MX-Records verwenden: Moderne MX-Record-Suche

php
<?php

$domain = "example.com";
$records = dns_get_record($domain, DNS_MX);

if ($records) {
  foreach ($records as $record) {
    echo "Host: " . $record['target'] . ", Priority: " . $record['priority'] . "<br/>";
  }
} else {
  echo "No MX records found for $domain";
}

In diesem Beispiel rufen wir die MX-Records für die Domain „example.com“ ab. Die Funktion gibt bei Erfolg ein Array mit den Records zurück, andernfalls false. Wenn Records gefunden werden, durchlaufen wir sie mit foreach und geben den Zielhost sowie die Priorität aus. Beachten Sie, dass DNS-Abfragen bei ungültigen Domains manchmal hängen bleiben oder fehlschlagen können; überprüfen Sie immer den Rückgabewert und erwägen Sie die Implementierung eines Timeout-Handlings für Produktionsanwendungen.

Fazit

Obwohl dns_get_mx() früher der Standard zum Abrufen von MX-Records war, wurde sie in PHP 8.2 entfernt. Verwenden Sie stattdessen dns_get_record($hostname, DNS_MX) für moderne und zuverlässige DNS-Abfragen. Wir hoffen, dass dieser Leitfaden Ihnen hilft, MX-Record-Suchen effektiv in Ihren PHP-Anwendungen zu implementieren.

Practice

Welche Aufgabe erfüllt die Funktion dns_get_mx() in PHP?

Finden Sie das nützlich?

Dual-run-Vorschau — vergleichen Sie mit den Symfony-Routen live.