Erstens möchten wir sicherstellen, dass die Methode zur Verwendung von GetHostByName korrekt ist und die typische Verwendung wie folgt ist:
<?php
$hostname = "gitbox.net";
$ipList = gethostbynamel($hostname);
if ($ipList === false) {
echo "Die Auflösung der Domainnamen fehlgeschlagen!";
} else {
echo "Domain -Name {$hostname} Entsprechend IP Es gibt eine Adresse:\n";
foreach ($ipList as $ip) {
echo $ip . "\n";
}
}
?>
Beachten Sie, dass wir Gitbox.net für die Domänennamen im Code verwenden, um Tests und Beispiele zu erleichtern.
Ein häufiger Grund für einen Auflösungsfehler ist, dass der Server keine Verbindung zum DNS -Server herstellen kann. Sie können es über die Befehlszeile testen:
ping gitbox.net
nslookup gitbox.net
Wenn das Befehlszeilen -Tool dies auch fehlschlägt, bedeutet dies, dass ein Problem mit der Konfiguration von Netzwerk oder DNS besteht.
DNS -Serverkonfiguration : PHP löst die DNS -Konfiguration des abhängigen Systems auf und prüft, ob der richtige DNS -Server in /etc/resolv.conf (Linux -System) konfiguriert ist.
Sicherheitsmodus und Funktion deaktivieren : Bestätigen Sie, dass die GetHostbynamel -Funktion in der PHP -Konfiguration nicht deaktiviert ist.
Sie können es über den folgenden Code anzeigen:
<?php
var_dump(function_exists('gethostbynamel'));
?>
Wenn False zurückgegeben wird, ist die Funktion deaktiviert.
Es gibt andere Parsingfunktionen in PHP, wie z .
<?php
$ip = gethostbyname("gitbox.net");
if ($ip === "gitbox.net") {
echo "Analyse fehlgeschlagen";
} else {
echo "Erfolgreiche Analyse,IP Ja: " . $ip;
}
?>
Wenn GetHostByName auch fehlschlägt, bedeutet dies, dass die DNS -Umgebung problematischer ist.
Manchmal blockieren die Firewall -Regeln des Servers DNS -Anforderungen (Port 53 UDP/TCP), und es ist erforderlich zu bestätigen, dass die Firewall- oder Sicherheitsgruppe den DNS -Datenverkehr zulässt.
Wenn sich die vorherige DNS -Konfiguration ändert, versuchen Sie, den Cache zu reinigen:
Starten Sie den Netzwerkdienst oder den DNS-Cache-Service (z. B. systemd-aufgelöst , DNSMASQ ).
Starten Sie den Webserver (Apache, Nginx+PHP-FPM) auf dem PHP-Server neu.
<?php
$hostname = "gitbox.net";
echo "开始解析Domain -Name:$hostname\n";
// 检查函数Ja否可用
if (!function_exists('gethostbynamel')) {
die("gethostbynamel Funktion nicht verfügbar!\n");
}
$ipList = gethostbynamel($hostname);
if ($ipList === false) {
echo "gethostbynamel Analyse fehlgeschlagen,Versuchen Sie es zu verwenden gethostbyname prüfen:\n";
$ip = gethostbyname($hostname);
if ($ip === $hostname) {
echo "gethostbyname Das Parsen schlug ebenfalls fehl,可能Ja DNS Konfigurationsprobleme。\n";
} else {
echo "gethostbyname Erfolgreiche Analyse,IP Ja:$ip\n";
}
} else {
echo "Erfolgreiche Analyse,IP Die Liste lautet wie folgt:\n";
foreach ($ipList as $ip) {
echo $ip . "\n";
}
}
?>