Muszę uzyskać lokalny adres IP komputera, np. 192. * .... Czy jest to możliwe z PHP?
Potrzebuję adresu IP systemu z uruchomionym skryptem, ale nie potrzebuję zewnętrznego adresu IP, potrzebuję adresu jego lokalnej karty sieciowej.
php
ip-address
powietrze
źródło
źródło
źródło
getHostName
nie zwracają nazwy domeny witryn.To jest stary post, ale pobierz go za pomocą tego:
Na przykład:
Znalazłeś go w innej witrynie, nie usuwaj polecenia trim, ponieważ w przeciwnym razie otrzymasz nazwę komputera.
BACKTICKS (Specjalne cudzysłowy): Działa, ponieważ PHP spróbuje uruchomić wszystko, co znajduje się pomiędzy tymi "specjalnymi cudzysłowami" (lewy apostrof) jako polecenie powłoki i zwróci wynik.
Jest bardzo podobny (ale znacznie bardziej wydajny) niż robienie:
źródło
gethostbyname
jest zwrócenie adresu IP pętli zwrotnej (np. 127.0.0.1) dla maszyny hosta.spróbuj tego (jeśli twój serwer to Linux):
źródło
eth0
że interfejs jest odpowiedni.wlan0
zamiasteth0
i zastąpić'inet addr:'
z'inet adr:'
, prawdopodobnie ze względu na lokalizacji używane w moim systemie (fr_FR). Poza tym ta odpowiedź była rozwiązaniem, którego szukałem. Dzięki!'inet adr:'
działało na moim terminalu (francuskie locale), ale w skrypcie PHP'inet addr:'
była poprawna wartość (chyba angielskie ustawienie regionalne).Domyślny zewnętrzny adres IP komputera lokalnego można uzyskać w następujący sposób:
Jak to działa:
Ponieważ jest to UDP,
socket_connect
nie wychodzi w sieci. Przypisuje tylko lokalny adres i port do gniazda. To pozwala nam uzyskać lokalny adres.To rozwiązanie działa bez ruchu sieciowego, DNS lub wykonywania poleceń.
Może nie działać, jeśli nie ma trasy do
8.8.8.8
(np. Nie masz połączenia z Internetem).źródło
$sock = socket_create(AF_INET, SOCK_DGRAM, SOL_UDP); socket_connect($sock, $this->getDockerMachineIp(), 53);
sockets
moduł powinien być zainstalowany i włączony w PHP.Zależy, co masz na myśli mówiąc o lokalnym:
Jeśli przez lokalny masz na myśli adres serwera / systemu wykonującego kod PHP, nadal istnieją dwie możliwości do omówienia. Jeśli PHP jest uruchamiane przez serwer WWW, możesz uzyskać adres serwera, czytając
$_SERVER['SERVER_ADDR']
. Jeśli PHP jest uruchamiane przez interfejs wiersza poleceń, prawdopodobnie będziesz musiał wykonać polecenie powłokiipconfig
(Windows) /ifconfig
(* nix) i odczytać adres.Jeśli przez lokalny masz na myśli zdalny adres osoby odwiedzającej witrynę, ale nie jej zewnętrzny adres IP (skoro podałeś 192. *), to nie masz szczęścia. Celem routingu NAT jest ukrycie tego adresu. Nie można zidentyfikować lokalnych adresów poszczególnych komputerów za adresem IP, ale istnieją pewne sztuczki (agent użytkownika, prawdopodobnie adres MAC), które mogą pomóc w odróżnieniu wielu komputerów uzyskujących dostęp z tego samego adresu IP.
źródło
nazwa hosta (1) może powiedzieć adres IP:
hostname --ip-address
lub, jak mówi człowiek, lepiej jest użyćhostname --all-ip-addresses
źródło
Możesz spróbować tego jako zwykły użytkownik w CLI na hoście Linux:
Wynik:
źródło
array('bond0'=>'10.66.42.83','bond1'=>'hosting Ip address','lo'=>'127.0.0.1', )
Mam to. Dodałem ten kod w pliku php,split()
funkcja została WYCOFANA w PHP 5.3.0. więc sugeruj użycieexplode()
zamiast tegoPróbowałem na komputerze z systemem Windows i działało, a także myślę, że będzie działać na Linuksie.
źródło
Jest to bardzo proste, a powyższe odpowiedzi komplikują sprawę. Po prostu możesz uzyskać zarówno lokalne, jak i publiczne adresy IP za pomocą tej metody.
źródło
To jest łatwe. Możesz uzyskać nazwę hosta za pomocą tego prostego kodu.
Możesz też użyć,
$_SERVER['HTTP_HOST']
aby uzyskać nazwę hosta.źródło
Bawiłem się tym pytaniem dla PHP po stronie serwera (działającego z terminala Linux)
Wyrzuciłem „ifconfig” i sprowadziłem do adresu IP.
Oto ona:
I oczywiście zmień „wlan0” na żądane urządzenie sieciowe.
Mój wynik to:
źródło
Jeśli pracujesz w środowisku deweloperskim na OS X, połączonym przez Wi-Fi:
źródło
U mnie to zadziałało.
źródło
PHP_SELF
Zwraca nazwę pliku bieżącego skryptu ze ścieżką względem katalogu głównegoSERVER_PROTOCOL
Zwraca nazwę i wersję protokołu żądanego stronyREQUEST_METHOD
Zwraca metodę żądania używaną do uzyskania dostępu do stronyDOCUMENT_ROOT
Zwraca katalog główny, w którym wykonywany jest bieżący skryptźródło
Spróbuj tego
źródło