net_get_interfaces în PHP

Rețea PHP 7.3+

Returnează interfețele de rețea ale serverului (lo, eth0...), cu adresele IP și starea lor.

Sintaxă
net_get_interfaces(): array|false

Ce face net_get_interfaces

net_get_interfaces listează plăcile de rețea ale mașinii. Cheile tabloului sunt numele interfețelor (lo, eth0, wlan0). Fiecare are up (dacă este pornită) și unicast, lista adreselor, cu family, address și netmask.

family este familia adresei: AF_INET (2) pentru IPv4. Valoarea pentru IPv6 diferă între sisteme (10 pe Linux, 30 pe macOS), iar unele intrări nu au adresă.

Ce returnează

Un tablou cu interfețele sau false la eroare.

Exemple

Exemplul 1: Adresele IPv4 ale serverului

<?php
foreach (net_get_interfaces() as $nume => $interfata) {
    foreach ($interfata["unicast"] ?? [] as $adresa) {
        if ($adresa["family"] === 2) {
            echo "$nume: " . $adresa["address"] . "/" . $adresa["netmask"] . "\n";
        }
    }
}

Rezultat posibil (depinde de server)

lo: 127.0.0.1/255.0.0.0
eth0: 10.0.0.12/255.255.255.0

Greșeli frecvente

  • Citești $adresa["address"] fără verificare. Unele intrări nu au cheia address (pe macOS, de exemplu, intrarea pentru adresa fizică a plăcii).

Comenzi înrudite

  • gethostname: Returnează numele calculatorului (serverului) pe care rulează scriptul.
  • gethostbyname: Află adresa IPv4 a unui domeniu, de exemplu adresa IP din spatele unui site.