当前位置:  开发笔记 > 编程语言 > 正文

如何在PHP中识别服务器IP地址

如何解决《如何在PHP中识别服务器IP地址》经验,为你挑选了8个好方法。

如何在PHP中识别服务器IP地址?



1> CloudyMarble..:

像这样服务器ip:

$_SERVER['SERVER_ADDR'];

这对于港口

$_SERVER['SERVER_PORT'];


这不是服务器地址!这是*remote*浏览器调用服务器的地址,该服务器受远程用户的控制.请使用"John K"的答案
在某些共享主机上,这会返回:: 1
这可能不正确,具体取决于Web服务器前面使用的Load Balancer.在这种情况下,您还需要X-Forwarded-For标头:http://en.wikipedia.org/wiki/X-Forwarded-For

2> 小智..:

如果您使用的是PHP 5.3或更高版本,则可以执行以下操作:

$host= gethostname();
$ip = gethostbyname($host);

当您运行独立脚本而不是通过Web服务器运行时,这很有效.


这是一个好主意,但性能可能是gethostbyname()的问题......
+1这是唯一可以使用命令行的解决方案.
@andreas不应该。本地主机名应该在`/ etc / hosts`文件中,并且应该是快速的-尽管它可能只是`127.0.0.1`。如果确实必须调用DNS,那么它将像您所说的那样慢。

3> Flask..:

例如:

$_SERVER['SERVER_ADDR']

当你在IIS上,尝试:

$_SERVER['LOCAL_ADDR']


`$ _SERVER ['LOCAL_ADDR']`仅在PHP作为CGI模块运行时才在IIS下可用.

4> Dom..:

我来到这个页面寻找一种获取我自己的IP地址的方法,而不是连接到我的远程机器.

这不适用于Windows机器.

但是如果有人搜索我要找的东西:

#! /usr/bin/php


(无耻地改编自如何在Linux和OS X上获取本地计算机的主IP地址?)



5> Ben D..:

这些最高投票的答案都不会可靠地返回服务器的公共地址.通常$_SERVER['SERVER_ADDR']是正确的,但如果您通过VPN访问服务器,它可能会返回内部网络地址而不是公共地址,即使不在同一网络上,某些配置也只是空白或有其他指定值.

同样,有些情况下$host= gethostname(); $ip = gethostbyname($host);不会返回正确的值,因为它依赖于DNS(内部配置或外部记录)和服务器的主机名设置来推断服务器的IP地址.这两个步骤都可能存在缺陷.例如,如果服务器的主机名格式化为域名(即HOSTNAME=yahoo.com)(那么至少在我的php5.4/Centos6设置上)gethostbyname将直接跳过查找Yahoo.com的地址而不是本地服务器的地址.

此外,由于gethostbyname回退到公共DNS记录,测试服务器具有未发布或不正确的公共DNS记录(例如,您通过localhostIP地址访问服务器,或者如果您使用本地hosts文件覆盖公共DNS ),那么您'将返回没有IP地址(它只会返回主机名)或更糟糕的是它将返回公共DNS记录中指定的错误地址(如果存在或者域名是否存在通配符).

根据具体情况,您还可以通过以下方式尝试第三种方法:

$external_ip = exec('curl http://ipecho.net/plain; echo');

这有其自身的缺陷(依赖于特定的第三方站点,并且可能存在通过不同主机或代理路由出站连接的网络设置),并且gethostbyname它可能很慢.老实说,我不确定哪种方法最常用,但要注意的一点是,特定的方案/配置会导致所有这些方法的输出不正确......所以如果可能,请验证您的方法是否正确使用返回您期望的值.



6> Emmanuel Mah..:

这可以用作上述示例的改编,而不必担心服务器上安装的curl.




7> 小智..:

检查$ _SERVER数组

echo $_SERVER['SERVER_ADDR'];



8> 小智..:

如果您在bash shell中使用PHP,则可以使用:

$server_name=exec('hostname');

因为$_SERVER[] SERVER_ADDR,HTTP_HOSTSERVER_NAME没有设定.

推荐阅读
低调pasta_730
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有