Position actuelle: Accueil> Derniers articles> Dépannage des étapes pour une résolution de nom de domaine de temps échoué à l'aide de GethostByNamel

Dépannage des étapes pour une résolution de nom de domaine de temps échoué à l'aide de GethostByNamel

gitbox 2025-05-27

1. Utilisation de base de la fonction de confirmation

Tout d'abord, nous voulons nous assurer que la méthode d'utilisation de GethostByName est correcte et que l'utilisation typique est la suivante:

 <?php
$hostname = "gitbox.net";
$ipList = gethostbynamel($hostname);

if ($ipList === false) {
    echo "La résolution du nom de domaine a échoué!";
} else {
    echo "nom de domaine {$hostname} Correspondant IP Il y a une adresse:\n";
    foreach ($ipList as $ip) {
        echo $ip . "\n";
    }
}
?>

Notez que nous utilisons gitbox.net pour les noms de domaine du code pour faciliter les tests et les exemples.


2. Vérifiez les étapes

1. Vérifiez la connectivité réseau

Une raison courante de l'échec de la résolution est que le serveur ne peut pas se connecter au serveur DNS. Vous pouvez le tester via la ligne de commande:

 ping gitbox.net
nslookup gitbox.net

Si l'outil de ligne de commande résout cela échoue également, cela signifie qu'il y a un problème avec la configuration du réseau ou du DNS.

2. Vérifiez la configuration de l'environnement PHP

  • Configuration du serveur DNS : PHP résout la configuration DNS du système dépendant et vérifie si le serveur DNS correct est configuré dans /etc/resolv.conf (système Linux).

  • Mode sûr et fonction Désactiver : Confirmez que la fonction GethostByNamel n'est pas désactivée dans la configuration PHP.

    Vous pouvez le voir via le code suivant:

 <?php
var_dump(function_exists('gethostbynamel'));
?>

Si false est renvoyé, la fonction est désactivée.

3. Comparaison avec d'autres fonctions de résolution DNS

Il existe d'autres fonctions d'analyse en PHP, comme GethostByName , pour tester s'il y a un problème avec la résolution globale du DNS:

 <?php
$ip = gethostbyname("gitbox.net");
if ($ip === "gitbox.net") {
    echo "L&#39;analyse a échoué";
} else {
    echo "Analyse réussie,IP Oui: " . $ip;
}
?>

Si GethostByName échoue également, cela signifie que l'environnement DNS est plus problématique.

4. Vérifiez le pare-feu et les restrictions de réseau

Parfois, les règles du pare-feu du serveur bloquent les demandes DNS (port 53 UDP / TCP), et il est nécessaire de confirmer que le pare-feu ou le groupe de sécurité autorise le trafic DNS.

5. Cache d'analyse et services de redémarrage

S'il y a un changement dans la configuration DNS précédente, essayez de nettoyer le cache:

  • Redémarrez le service réseau ou le service de cache DNS (tel que SystemD-Resolved , DNSMASQ ).

  • Redémarrez le serveur Web (Apache, Nginx + PHP-FPM) sur le serveur PHP.


3. Exemple de code de débogage complet

 <?php
$hostname = "gitbox.net";

echo "开始解析nom de domaine:$hostname\n";

// 检查函数Oui否可用
if (!function_exists('gethostbynamel')) {
    die("gethostbynamel Fonction non disponible!\n");
}

$ipList = gethostbynamel($hostname);

if ($ipList === false) {
    echo "gethostbynamel L&#39;analyse a échoué,Essayer d&#39;utiliser gethostbyname test:\n";
    $ip = gethostbyname($hostname);
    if ($ip === $hostname) {
        echo "gethostbyname L&#39;analyse a également échoué,可能Oui DNS Problèmes de configuration。\n";
    } else {
        echo "gethostbyname Analyse réussie,IP Oui:$ip\n";
    }
} else {
    echo "Analyse réussie,IP La liste est la suivante:\n";
    foreach ($ipList as $ip) {
        echo $ip . "\n";
    }
}
?>