Ich brauche eine lokale IP des Computers wie 192. * .... Ist das mit PHP möglich?
Ich benötige die IP-Adresse des Systems, auf dem das Skript ausgeführt wird, aber ich benötige nicht die externe IP, sondern seine lokale Netzwerkkartenadresse.
php
ip-address
Luft
quelle
quelle
quelle
getHostName
den Domainnamen der Site nicht zurückgeben.Dies ist ein alter Beitrag, aber verstehen Sie ihn damit:
Beispielsweise:
Wenn Sie es auf einer anderen Site gefunden haben, entfernen Sie den Befehl trim nicht, da Sie sonst den Computernamen erhalten.
BACKTICKS (Die speziellen Anführungszeichen): Es funktioniert, weil PHP versucht, alles, was zwischen diesen "speziellen Anführungszeichen" (Backticks) liegt, als Shell-Befehl auszuführen und die resultierende Ausgabe zurückgibt.
Ist sehr ähnlich (aber viel effizienter) als:
quelle
gethostbyname
, eine Loopback-IP (z. B. 127.0.0.1) für den Host-Computer zurückzugeben.Versuchen Sie dies (wenn Ihr Server Linux ist):
quelle
eth0
für die entsprechende Schnittstelle.wlan0
statteth0
und zu ersetzen'inet addr:'
mit'inet adr:'
, möglicherweise aufgrund der locale auf meinem System (fr_FR). Davon abgesehen war diese Antwort die Lösung, nach der ich gesucht habe. Vielen Dank!'inet adr:'
funktionierte eigentlich in meinem Terminal (französisches Gebietsschema), aber im PHP-Skript'inet addr:'
war der richtige Wert (englisches Gebietsschema, denke ich).Die standardmäßige externe IP-Adresse des lokalen Computers kann wie folgt abgerufen werden:
Wie es funktioniert:
Da dies UDP ist,
socket_connect
geht es nicht ins Netzwerk. Es wird dem Socket nur eine lokale Adresse und ein lokaler Port zugewiesen. Dadurch können wir die lokale Adresse erhalten.Diese Lösung funktioniert ohne Netzwerkverkehr, DNS oder Befehlsausführung.
Es funktioniert möglicherweise nicht, wenn es keine Route zu gibt
8.8.8.8
(z. B. wenn Sie keine Internetverbindung haben).quelle
$sock = socket_create(AF_INET, SOCK_DGRAM, SOL_UDP); socket_connect($sock, $this->getDockerMachineIp(), 53);
sockets
Modul auf PHP installiert und aktiviert sein sollte.Kommt darauf an, was du mit lokal meinst:
Wenn mit lokal die Adresse des Servers / Systems gemeint ist, auf dem der PHP-Code ausgeführt wird, gibt es noch zwei Möglichkeiten. Wenn PHP über einen Webserver ausgeführt wird, können Sie die Serveradresse durch Lesen abrufen
$_SERVER['SERVER_ADDR']
. Wenn PHP über eine Befehlszeilenschnittstelle ausgeführt wird, müssten Sie wahrscheinlichipconfig
(Windows) /ifconfig
(* nix) unter Shell ausführen und die Adresse ermitteln.Wenn mit lokal die Remote-Adresse des Website-Besuchers gemeint ist, nicht jedoch dessen externe IP-Adresse (da Sie ausdrücklich 192 * angegeben haben), haben Sie kein Glück. Der Sinn des NAT-Routings besteht darin, diese Adresse zu verbergen. Sie können die lokalen Adressen einzelner Computer hinter einer IP-Adresse nicht identifizieren. Es gibt jedoch einige Tricks (Benutzeragent, möglicherweise Mac-Adresse), mit denen Sie unterscheiden können, ob mehrere Computer von derselben IP-Adresse aus zugreifen.
quelle
Hostname (1) kann die IP-Adresse angeben:
hostname --ip-address
oder wie der Mensch sagt, ist es besser, sie zu verwendenhostname --all-ip-addresses
quelle
Sie können dies als regulärer Benutzer in der CLI auf einem Linux-Host versuchen:
Ausgabe:
quelle
array('bond0'=>'10.66.42.83','bond1'=>'hosting Ip address','lo'=>'127.0.0.1', )
Ich schaff das. Ich habe diesen Code in der PHP-Datei hinzugefügt,split()
Funktion wurde ab PHP 5.3.0 VERRINGERT.explode()
Ich habe versucht, in Windows-PC und es hat funktioniert und denke auch, dass unter Linux funktioniert.
quelle
Es ist sehr einfach und die obigen Antworten erschweren die Sache. Mit dieser Methode können Sie einfach sowohl lokale als auch öffentliche IP-Adressen abrufen.
quelle
Es ist einfach. Sie können den Hostnamen durch diesen einfachen Code erhalten.
Sie können auch
$_SERVER['HTTP_HOST']
den Hostnamen abrufen.quelle
Ich habe mit dieser Frage für ein serverseitiges PHP (läuft vom Linux-Terminal) herumgespielt.
Ich habe 'ifconfig' explodiert und auf die IP-Adresse gekürzt.
Hier ist es:
Und natürlich ändern Sie 'wlan0' auf Ihr gewünschtes Netzwerkgerät.
Meine Ausgabe ist:
quelle
Wenn Sie sich in einer Entwicklungsumgebung unter OS X befinden, die über WLAN verbunden ist:
quelle
Es hat bei mir funktioniert.
quelle
PHP_SELF
Gibt den Dateinamen des aktuellen Skripts mit dem Pfad relativ zum Stamm zurückSERVER_PROTOCOL
Gibt den Namen und die Revision des von der Seite angeforderten Protokolls zurückREQUEST_METHOD
Gibt die Anforderungsmethode zurück, die für den Zugriff auf die Seite verwendet wirdDOCUMENT_ROOT
Gibt das Stammverzeichnis zurück, unter dem das aktuelle Skript ausgeführt wirdquelle
Versuche dies
quelle