Start · Sprachen · PHP · Referenz · gethostname

gethostname

Funktion

Gibt den Hostnamen des lokalen Rechners zurück, auf dem das PHP-Skript ausgeführt wird.

seit PHP 5.3.0 Kategorie: http

Signatur

gethostname(): string|false

Beschreibung

gethostname() liest den Standard-Hostnamen des Systems aus, auf dem der aktuelle PHP-Prozess läuft. Der Hostname wird typischerweise vom Betriebssystem verwaltet und kann z. B. über /etc/hostname (Linux) oder die Systemeinstellungen (Windows) konfiguriert werden.

Die Funktion ist besonders nützlich in verteilten Systemen oder Clustern, wo mehrere Server denselben Code ausführen und man zur Laufzeit identifizieren möchte, welcher Node die Anfrage bearbeitet – etwa für Logging, Monitoring oder Debugging.

Im Gegensatz zu php_uname('n') ist gethostname() direkter und liefert ausschließlich den Hostnamen ohne weitere Systeminformationen. Sie wird intern durch den POSIX-Aufruf gethostname() (C-Bibliothek) realisiert.

Im Fehlerfall – wenn der Hostname nicht ermittelt werden kann – gibt die Funktion false zurück.

Rückgabewert

Typ
string|false
Beschreibung
Gibt den Hostnamen als string zurück. Bei einem Fehler wird false zurückgegeben.

Beispiele

Hostnamen des aktuellen Servers ausgeben

<?php
$hostname = gethostname();

if ($hostname !== false) {
    echo 'Aktueller Hostname: ' . $hostname;
} else {
    echo 'Hostname konnte nicht ermittelt werden.';
}
Aktueller Hostname: webserver01.example.com

Hostnamen im Logging-Kontext verwenden

<?php
function logMessage(string $message): void
{
    $hostname = gethostname() ?: 'unbekannt';
    $timestamp = date('Y-m-d H:i:s');
    $logEntry = sprintf('[%s] [%s] %s', $timestamp, $hostname, $message);
    // Im echten Einsatz z. B. in Datei schreiben oder an Log-Dienst senden
    echo $logEntry . PHP_EOL;
}

logMessage('Anwendung gestartet.');
logMessage('Datenbankverbindung hergestellt.');
[2024-05-10 14:32:01] [webserver01] Anwendung gestartet. [2024-05-10 14:32:01] [webserver01] Datenbankverbindung hergestellt.

Hostname in verteilten Systemen zur Node-Identifikation nutzen

<?php
$nodes = [
    'webserver01.example.com' => 'Primärer Webserver',
    'webserver02.example.com' => 'Sekundärer Webserver',
];

$currentHost = gethostname();

if ($currentHost !== false && isset($nodes[$currentHost])) {
    echo 'Dieser Node ist: ' . $nodes[$currentHost];
} else {
    echo 'Unbekannter oder nicht registrierter Node: ' . ($currentHost ?: 'nicht ermittelbar');
}
Dieser Node ist: Primärer Webserver

// Wichtig · Fallstricke

Sicherheitshinweis: Der Hostname stammt aus der Systemkonfiguration und ist grundsätzlich vertrauenswürdig – er sollte jedoch nicht ungeprüft an Endnutzer ausgegeben werden, wenn er möglicherweise sensible Infrastrukturinformationen enthält (z. B. interne Servernamen).

Auf einigen Systemen kann gethostname() nur den Kurznamen (ohne Domain) zurückliefern. Möchte man den vollqualifizierten Domainnamen (FQDN), sollte man gethostbyname(gethostname()) kombiniert mit gethostbyaddr() oder DNS-Abfragen verwenden.

Auf Windows-Systemen entspricht der zurückgegebene Wert dem NetBIOS- bzw. Computernamen.