如何使用 PHP 获取服务器的外部 IP?

2022-08-30 14:59:01

我经常听到人们说要使用“”,但这会返回我的服务器的LAN IP(例如192.168.1.100)。我想要外部 IP。$_SERVER['SERVER_ADDR']


答案 1

如果您使用的是路由器,则无法通过常规PHP获取ISP指定的基础IP地址。获取外部 IP 的一种方法是找到一个将为您获取该 IP 的服务,并将地址回显给您。我找到了一个方便的服务,可以做到这一点。http://ipecho.net/

您可以使用:

$realIP = file_get_contents("http://ipecho.net/plain");

答案 2

只需查询返回您的 IP 地址的主机:

$externalContent = file_get_contents('http://checkip.dyndns.com/');
preg_match('/Current IP Address: \[?([:.0-9a-fA-F]+)\]?/', $externalContent, $m);
$externalIp = $m[1];

或者,设置一个仅回显 IP 的服务,并按如下方式使用它:

$externalIp = file_get_contents('http://yourdomain.example/ip/');

只需回显远程 IP 地址即可自行设置服务,或付费某人托管服务。未经许可,请勿使用他人的服务器。以前,这个答案与我的一个服务有关,现在每秒被击中多次。

请注意,在具有一个或多个 NAT 的 IP 网络中,您可能有多个外部 IP 地址。这将只给你其中之一。

此外,此解决方案当然取决于可用的远程主机。但是,由于没有广泛实施的标准(没有ISP,只有一些家用路由器实现UPnP),因此没有其他方法可以获取您的外部IP地址。即使您可以与本地 NAT 通信,也无法确定其背后是否没有其他 NAT。


推荐