2017-05-09 9 views
2

Ich möchte einige Debug-Fenster codieren, die nur angezeigt wird, wenn ich die Seite besuche. Ich habe eine DDNS-Adresse, die meine IP enthält. Diese IP wird auf dem Server abgefragt. Oder sagen wir, es sollte gefragt werden. Aber da kommt das Lösungsproblem.Verwenden von gethostbyname zum Auflösen einer IP

Ich habe versucht, eine IP unter Verwendung zu beheben:

echo gethostbyname("google.com"); 

Egal, welche Domain ich, es nicht immer und gibt nur die Domäne dokumentiert. Es gibt die IPv4-Adresse oder eine Zeichenfolge mit dem unmodifizierten Hostnamen bei einem Fehler zurück.

ich auch versucht:

function getAddrByHost($host, $timeout = 3) { 
    $query = "nslookup -timeout=$timeout -retry=1 $host"; 
    if(preg_match('/\nAddress: (.*)\n/', $query, $matches)) 
     return trim($matches[1]); 
    return $host; 
} 
echo getAddrByHost("google.com"); 

Dies hat das gleiche Ergebnis. Die Ausführung von nslookup -timeout=$timeout -retry=1 google.com in meiner Befehlszeile auf meinem PC funktioniert gut. Aber ich brauche es für ein Skript so die mir überhaupt nicht helfen :)

Ich erwarte, dass eine normale IPv4-Adresse.

Braucht diese Funktion spezielle php.ini Einstellungen zu laufen?

Meine Hauptfrage ist, ist diese Funktion völlig gebrochen?

+0

Können Sie nicht für den Location-Header aussehen? 'gethostbyname ($ headers ['Location'])' – Pogrindis

+0

und woher soll die Variable '$ headers 'kommen? : D – Dwza

+0

Ja, die 'get_headers'-Methode, aber tatsächlich hier testen, es funktioniert auch nicht! : | – Pogrindis

Antwort

2
  1. Seien Sie sicher, dass die Fähigkeit zu überprüfen, um Port 53 (DNS)
  2. Sie weiter, indem Sie versuchen passthru('nslookup google.com 2>&1') von PHP debuggen zu verbinden. Dies zeigt die volle Ausgabe von stdout und stderr, da es wahrscheinlich mehr Informationen enthält.
Verwandte Themen