Signatur
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
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;
}
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;
}
// 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.