So identifizieren Sie die Server-IP-Adresse in PHP
Wie kann ich identifizieren die server-IP-Adresse in PHP?
InformationsquelleAutor der Frage pooja | 2011-04-27
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wie kann ich identifizieren die server-IP-Adresse in PHP?
InformationsquelleAutor der Frage pooja | 2011-04-27
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wie dies für die server-ip:
und dieser für den Anschluss
InformationsquelleAutor der Antwort CloudyMarble
Wenn Sie mit der PHP-version 5.3 oder höher können Sie Folgendes tun:
Dies funktioniert gut, wenn Sie eine stand-alone-Skript nicht ausgeführt wird, durch den web-server.
InformationsquelleAutor der Antwort John K
Beispiel:
wenn Ihr auf IIS, try:
InformationsquelleAutor der Antwort Flask
Weder die meisten Antworten stimmten zuverlässig Rückkehr der server die öffentliche Adresse. In der Regel
$_SERVER['SERVER_ADDR']
wird richtig sein, aber wenn Sie den Zugriff auf den server über ein VPN, wird es wahrscheinlich zurückgeben, die interne Netzwerk-Adresse und nicht über eine öffentliche Adresse, und selbst wenn es nicht auf dem gleichen Netzwerk einigen Konfigurationen wird einfach leer sein, oder einen anderen angegebenen Wert.Ebenso gibt es Szenarien, in denen
$host= gethostname(); $ip = gethostbyname($host);
nicht die richtigen Werte zurück, weil es sich auf auf beiden DNS-Server (entweder intern konfiguriert oder externe Datensätze) und hostname des Servers-Einstellungen zu extrapolieren die IP-Adresse des Servers. Beide Schritte sind potenziell fehlerhaft. Zum Beispiel, wenn der hostname des server formatiert ist wie ein domain-name (z.B.HOSTNAME=yahoo.com
), dann (zumindest bei mir php5.4/Centos6-setup)gethostbyname
wird direkt zu finden Yahoo.com's-Adresse anstatt des lokalen Servers.Darüber hinaus, weil
gethostbyname
fällt wieder auf den öffentlichen DNS-Datensätze, die ein Test-server mit unveröffentlichten oder falschen öffentlichen DNS-Datensätze (zum Beispiel, sind Sie auf den server zugreifen, indemlocalhost
oder IP-Adresse, oder wenn Sie auf überwiegenden öffentlichen DNS mit Ihrem lokalenhosts
- Datei) und dann Sie zurück zu bekommen, die entweder keine IP-Adresse (es wird nur wieder den Hostnamen) oder-noch schlimmer-wird es wieder die falsche Adresse angegeben, in der öffentlichen DNS-Datensätze, falls einer vorhanden ist oder ob es eine wildcard für die domain.Je nach situation können Sie auch versuchen, einen Dritten Ansatz von etwas wie dies:
Dieser hat seine eigenen Mängel (beruht auf einem spezifischen Drittanbieter-Website, und es könnte sein, Netzwerk-Einstellungen, dass ausgehende verbindungen über einen anderen host oder proxy) und wie
gethostbyname
es sein kann, langsam. Ich bin ehrlich gesagt nicht sicher, welcher Ansatz richtig sein, die meisten oft, aber die Lektion zu Herzen zu nehmen ist, dass bestimmte Szenarien/Konfigurationen führen zu falschen Ausgänge für alle Ansätze... also, wenn möglich, stellen Sie sicher, dass der Ansatz, die Sie verwenden, ist die Rücksendung der Werte, die Sie erwarten.InformationsquelleAutor der Antwort Ben D
Überprüfen Sie die $_SERVER array
InformationsquelleAutor der Antwort Ale
Den vorherigen Antworten geben alle $_SERVER['SERVER_ADDR']. Dies funktioniert nicht für einige IIS-Installationen. Wenn Sie wollen, dass diese arbeiten, die auf IIS, verwenden Sie dann die folgenden:
InformationsquelleAutor der Antwort qbert220
Falls Sie PHP in bash-shell, die Sie verwenden können:
Weil
$_SERVER[] SERVER_ADDR
HTTP_HOST
undSERVER_NAME
sind nicht festgelegt.InformationsquelleAutor der Antwort Stefano Zanola
Kam ich auf diese Seite auf der Suche nach einem Weg, um meine eigene ip-Adresse, nicht die von der remote-Maschine, die Verbindung zu mir.
Wird dies nicht funktionieren, für eine windows-Maschine.
Aber falls jemand sucht, was ich suchte:
(Schamlos übernommen von Wie bekomme ich die primäre IP-Adresse der lokalen Maschine auf Linux und OS X?)
InformationsquelleAutor der Antwort Dom
Dies ist, was Sie verwenden, wie eine Anpassung der oben genannten Beispiele, ohne sich Gedanken über curl auf dem server installiert.
InformationsquelleAutor der Antwort Emmanuel Mahuni
Ich gerade erstellt ein einfaches script, um wieder die $_SERVER['REMOTE_ADDR'] und $_SERVER['SERVER_ADDR'] in IIS, so dass Sie nicht haben, zu ändern, jede variable. Fügen Sie diesen text in Ihre php-Datei, die enthalten ist in jeder Seite.
InformationsquelleAutor der Antwort Xander
InformationsquelleAutor der Antwort Axe
Haben Sie möglicherweise die Verwendung
$HTTP_SERVER_VARS['server_ADDR']
wenn man nicht immer alles von oben zu Antworten und, wenn Sie ältere PHP-versionInformationsquelleAutor der Antwort OpenCode
Fand ich diese arbeiten für mich:
GetHostByName("");
Läuft XAMPP v1.7.1 auf Windows 7 läuft der Apache webserver.
Leider wird es nur geben, mein gateway-IP-Adresse.
InformationsquelleAutor der Antwort Sanford Staab
Wie diese:
InformationsquelleAutor der Antwort Shadow Wizard
Überprüfen Sie die $_SERVER-array
InformationsquelleAutor der Antwort Gaurang