Start · Sprachen · PHP · Referenz · swoole_get_local_ip

swoole_get_local_ip

Funktion

Ermittelt alle IPv4-Adressen der lokalen Netzwerkkarten des Rechners und gibt sie als assoziatives Array zurück.

Kategorie: misc

Signatur

swoole_get_local_ip(): array

Beschreibung

swoole_get_local_ip() ist eine Funktion der Swoole-Erweiterung, die alle verfügbaren Netzwerkschnittstellen des aktuellen Servers durchsucht und deren IPv4-Adressen zurückliefert. Das Ergebnis ist ein assoziatives Array, in dem die Schlüssel die Namen der Netzwerkschnittstellen (z. B. eth0, lo, ens3) und die Werte die zugehörigen IPv4-Adressen als Strings sind.

Die Funktion ist besonders nützlich in Netzwerk- und Server-Anwendungen, die auf einem Rechner mit mehreren Netzwerkkarten laufen und die eigene IP-Adresse für eingehende Verbindungen oder für die Konfiguration von Diensten dynamisch ermitteln müssen. Statt auf Umgebungsvariablen oder Shell-Befehle angewiesen zu sein, bietet swoole_get_local_ip() eine portable PHP-interne Lösung.

Loopback-Adressen wie 127.0.0.1 werden typischerweise ebenfalls zurückgegeben und müssen bei Bedarf manuell gefiltert werden. Die Funktion steht nur zur Verfügung, wenn die Swoole-Erweiterung installiert und aktiviert ist.

Rückgabewert

Typ
array
Beschreibung
Gibt ein assoziatives Array zurück, bei dem die Schlüssel die Namen der Netzwerkschnittstellen (z. B. eth0, lo) und die Werte die jeweiligen IPv4-Adressen als Strings sind. Sind keine Schnittstellen gefunden, wird ein leeres Array zurückgegeben.

Beispiele

Alle lokalen IP-Adressen ausgeben

<?php
// Voraussetzung: Swoole-Erweiterung ist installiert
$ips = swoole_get_local_ip();

foreach ($ips as $interface => $ip) {
    echo "Interface: {$interface} => IP: {$ip}" . PHP_EOL;
}
Interface: lo => IP: 127.0.0.1 Interface: eth0 => IP: 192.168.1.100

Erste nicht-lokale IP-Adresse ermitteln

<?php
// Loopback-Adressen herausfiltern und erste öffentliche/private IP ermitteln
$ips = swoole_get_local_ip();

$serverIp = null;
foreach ($ips as $interface => $ip) {
    if ($ip !== '127.0.0.1') {
        $serverIp = $ip;
        break;
    }
}

if ($serverIp !== null) {
    echo "Server-IP: {$serverIp}" . PHP_EOL;
} else {
    echo "Keine externe IP gefunden." . PHP_EOL;
}
Server-IP: 192.168.1.100

// Wichtig · Fallstricke

Hinweis: swoole_get_local_ip() ist ausschließlich in Umgebungen verfügbar, in denen die Swoole-Erweiterung installiert ist. Sie ist keine Standard-PHP-Funktion. Bei fehlender Erweiterung wirft PHP einen fatalen Fehler (Call to undefined function).

Die Funktion gibt nur IPv4-Adressen zurück. IPv6-Adressen werden nicht berücksichtigt. Für IPv6-Unterstützung müssen alternative Methoden (z. B. getifaddrs über Shell-Befehle) genutzt werden.

In Docker-Containern oder virtuellen Maschinen können unerwartete Schnittstellen und IP-Adressen auftauchen. Es empfiehlt sich, das zurückgegebene Array stets zu validieren, bevor die IP-Adresse für Konfigurationen oder Verbindungen genutzt wird.