W3docs

get_host_info

Erläuterung der mysqli_get_host_info()-Funktion in PHP: Syntax, Rückgabewerte, prozeduraler und objektorientierter Stil mit Beispielen.

Die Funktion mysqli_get_host_info() gibt einen einzelnen string zurück, der beschreibt, wie Ihr PHP-Skript mit dem MySQL-Server verbunden ist — den Hostnamen zusammen mit dem Transport (TCP/IP, einem Unix-Socket oder einer Named Pipe). Diese Seite erläutert die Syntax, die möglichen Rückgabewerte, den prozeduralen und den objektorientierten Stil sowie die praktischen Szenarien, in denen die Funktion nützlich ist.

Was get_host_info() zurückgibt

mysqli_get_host_info() ist eine eingebaute PHP-Funktion, die bei einer offenen MySQLi-Verbindung einen lesbaren string zurückgibt, der den Verbindungstyp und den Host beschreibt. Typische Rückgabewerte sind:

  • localhost via TCP/IP — verbunden mit dem lokalen Server über einen Netzwerk-Socket.
  • Localhost via UNIX socket — verbunden über einen lokalen Unix-Domain-Socket (Standard unter Linux/macOS, wenn der Host localhost ist).
  • 127.0.0.1 via TCP/IP — verbunden mit einer expliziten IP über TCP/IP.
  • db.example.com via TCP/IP — verbunden mit einem Remote-Host.

Die Funktion ist schreibgeschützt und ändert die Verbindung nie; sie gibt lediglich den Transport aus, den der Treiber ausgehandelt hat. Das macht sie praktisch für Debugging (um zu bestätigen, dass Sie wirklich den erwarteten Socket/Host erreicht haben) und für die Protokollierung von Verbindungsdiagnosen.

Syntax

mysqli_get_host_info(mysqli $mysqli): string
ParameterBeschreibung
$mysqliEin gültiges Verbindungsobjekt, das von mysqli_connect() oder mysqli_real_connect() zurückgegeben wird.

Rückgabewert: ein string, der den Verbindungstyp zum Server beschreibt. Er gibt nie false zurück; wenn der Link ungültig ist, löst PHP stattdessen eine Warnung aus.

Prozeduraler Stil

Übergeben Sie das von mysqli_connect() zurückgegebene Verbindungsobjekt:

<?php
$mysqli = mysqli_connect("localhost", "username", "password", "database");

if (!$mysqli) {
    die("Connection failed: " . mysqli_connect_error());
}

echo "Host information: " . mysqli_get_host_info($mysqli);

mysqli_close($mysqli);
?>

Wir rufen zunächst mysqli_connect() auf, um die Verbindung zu öffnen, und prüfen dann das Ergebnis, damit wir mit mysqli_connect_error() sauber fehlschlagen können, anstatt Warnungen auszulösen. Das Übergeben des Links an mysqli_get_host_info() gibt die Transportbeschreibung zurück, die wir ausgeben. Auf einem Linux-Host mit localhost sieht die Ausgabe so aus:

Host information: Localhost via UNIX socket

Objektorientierter Stil

Die prozedurale Funktion hat eine entsprechende Eigenschaft am mysqli-object, get_host_info:

<?php
$mysqli = new mysqli("localhost", "username", "password", "database");

if ($mysqli->connect_errno) {
    die("Connection failed: " . $mysqli->connect_error);
}

echo "Host information: " . $mysqli->get_host_info;

$mysqli->close();
?>

Beide Stile geben denselben string zurück. Beachten Sie, dass get_host_info im objektorientierten Stil als Eigenschaft zugegriffen wird, nicht als Methode aufgerufen wird.

Wann würde ich es verwenden?

  • Transport verifizieren. Das Erzwingen von TCP/IP (z. B. durch Verwendung von 127.0.0.1 statt localhost) ist manchmal für Tools oder TLS erforderlich. get_host_info() bestätigt, welchen Sie tatsächlich erhalten haben.
  • Verbindungsprotokollierung. Das Aufzeichnen des Host-Strings zusammen mit Verbindungsstatistiken liefert Ihnen einen schnellen Überblick darüber, wohin eine Anfrage verbunden wurde.
  • Fehlersuche bei „funktioniert lokal, aber nicht in der Produktion." Ein überraschendes via UNIX socket vs. via TCP/IP erklärt oft Unterschiede bei Berechtigungen oder Firewalls.

Häufige Fallstricke

  • Verwechseln Sie sie nicht mit dem $_SERVER-Superglobal. $_SERVER['SERVER_NAME'] beschreibt den Web-Server, der die HTTP-Anfrage verarbeitet; mysqli_get_host_info() beschreibt die Datenbank-Verbindung — zwei unabhängige Dinge.
  • Der string ist für Menschen gedacht, nicht zum Parsen. Wenn Sie strukturierte Werte benötigen, überprüfen Sie den Host, den Sie an mysqli_connect() übergeben haben, anstatt diesen string aufzuteilen.
  • Für die MySQL-Client-Bibliothek-Version (statt des Verbindungshosts) verwenden Sie mysqli_get_client_info(); für die Serverseite verwenden Sie mysqli_get_server_info().

Fazit

mysqli_get_host_info() ist eine kleine, aber praktische Diagnosefunktion: Sie gibt an, wie Ihr Skript den MySQL-Server erreicht hat. Verwenden Sie sie, wenn Sie den Verbindungstransport bestätigen oder protokollieren müssen, und greifen Sie auf mysqli_get_proto_info() oder mysqli_get_connection_stats() zurück, wenn Sie mehr Details benötigen.

Übungen

Übung
Was gibt mysqli_get_host_info() zurück?
Was gibt mysqli_get_host_info() zurück?
Was this page helpful?