Signatur
Beschreibung
net_get_interfaces() liest alle auf dem aktuellen System verfügbaren Netzwerkschnittstellen (z. B. eth0, lo, en0) aus und liefert deren Konfigurationsdetails als verschachteltes assoziatives Array zurück. Die Funktion ist nützlich, wenn ein PHP-Skript auf Netzwerkinformationen des Hosts angewiesen ist – etwa um die eigene IP-Adresse zu ermitteln, aktive Schnittstellen zu prüfen oder Netzwerkdiagnosen durchzuführen.
Das zurückgegebene Array ist nach Schnittstellenname indiziert. Jeder Wert ist wiederum ein Array mit den Schlüsseln unicast (enthält IP-Adressen und Netzmasken), up (ob die Schnittstelle aktiv ist), running, loopback, point_to_point sowie weiteren plattformabhängigen Einträgen.
Die Funktion ist besonders in CLI-Skripten oder Server-Monitoring-Tools sinnvoll, wo man nicht auf Shell-Befehle wie ip addr zurückgreifen möchte. Im Webserver-Kontext ist die verfügbare Information davon abhängig, mit welchen Rechten PHP ausgeführt wird.
Liefert die Funktion false zurück, konnte die Systemabfrage nicht durchgeführt werden – etwa wegen fehlender Berechtigungen oder Plattformbeschränkungen.
Rückgabewert
"lo", "eth0"). Jeder Wert ist ein Array mit Details zur Schnittstelle, u. a. unicast (Array mit IP-Adressen und Präfixlängen), up (bool), running (bool), loopback (bool) und point_to_point (bool). Gibt false zurück, wenn die Informationen nicht abgerufen werden konnten.Beispiele
Alle Netzwerkschnittstellen auflisten
<?php
$interfaces = net_get_interfaces();
if ($interfaces === false) {
echo "Netzwerkschnittstellen konnten nicht abgerufen werden." . PHP_EOL;
exit(1);
}
foreach ($interfaces as $name => $details) {
$status = $details['up'] ? 'aktiv' : 'inaktiv';
echo "Schnittstelle: {$name} ({$status})" . PHP_EOL;
if (!empty($details['unicast'])) {
foreach ($details['unicast'] as $address) {
echo " IP-Adresse : " . ($address['address'] ?? 'n/a') . PHP_EOL;
echo " Präfixlänge: " . ($address['prefix_length'] ?? 'n/a') . PHP_EOL;
}
}
}
Nur aktive, nicht-Loopback-Schnittstellen mit IPv4-Adresse ermitteln
<?php
$interfaces = net_get_interfaces();
if ($interfaces === false) {
throw new RuntimeException('Netzwerkinformationen nicht verfügbar.');
}
$aktive = array_filter($interfaces, static function (array $iface): bool {
return $iface['up'] && !$iface['loopback'];
});
foreach ($aktive as $name => $details) {
foreach ($details['unicast'] as $addr) {
// Nur IPv4-Adressen ausgeben (keine Doppelpunkte = kein IPv6)
if (isset($addr['address']) && !str_contains($addr['address'], ':')) {
echo "{$name}: " . $addr['address'] . "/" . $addr['prefix_length'] . PHP_EOL;
}
}
}
// Wichtig · Fallstricke
Plattformabhängigkeit: Die zurückgegebenen Schlüssel und ihre Verfügbarkeit können je nach Betriebssystem (Linux, macOS, Windows) variieren. Prüfe stets mit isset() oder array_key_exists(), ob ein erwarteter Schlüssel vorhanden ist.
Berechtigungen: Auf manchen Systemen oder in containerisierten Umgebungen (z. B. Docker) können Netzwerkdetails eingeschränkt sein. Fehlt die notwendige Berechtigung, gibt die Funktion false zurück.
Verfügbarkeit: Die Funktion ist erst ab PHP 8.3.0 verfügbar. Für ältere PHP-Versionen muss auf Shell-Befehle (exec, shell_exec) oder externe Bibliotheken zurückgegriffen werden.