Start · Sprachen · PHP · Referenz · net_get_interfaces

net_get_interfaces

Funktion

Gibt ein assoziatives Array aller verfügbaren Netzwerkschnittstellen des Systems zurück.

seit PHP 8.3.0 Kategorie: http

Signatur

net_get_interfaces(): array|false

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

Typ
array|false
Beschreibung
Gibt ein assoziatives Array zurück, dessen Schlüssel die Namen der Netzwerkschnittstellen sind (z. B. "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;
        }
    }
}
Schnittstelle: lo (aktiv) IP-Adresse : 127.0.0.1 Präfixlänge: 8 Schnittstelle: eth0 (aktiv) IP-Adresse : 192.168.1.42 Präfixlänge: 24

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;
        }
    }
}
eth0: 192.168.1.42/24

// 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.