如何使用 PHP 获取服务器的公共 IP 地址?
Posted
技术标签:
【中文标题】如何使用 PHP 获取服务器的公共 IP 地址?【英文标题】:How to get server's public IP address using PHP? 【发布时间】:2014-05-31 10:01:22 【问题描述】:我需要使用 php 获取系统的公共 IP 地址。我尝试了以下功能:
function get_server_ip()
$ipaddress = '';
if(getenv('HTTP_X_FORWARDED_FOR'))
$ipaddress = getenv('HTTP_X_FORWARDED_FOR');
else if(getenv('HTTP_X_FORWARDED'))
$ipaddress = getenv('HTTP_X_FORWARDED');
else if(getenv('HTTP_FORWARDED_FOR'))
$ipaddress = getenv('HTTP_FORWARDED_FOR');
else if(getenv('HTTP_FORWARDED'))
$ipaddress = getenv('HTTP_FORWARDED');
else if(getenv('REMOTE_ADDR'))
$ipaddress = getenv('REMOTE_ADDR');
return $ipaddress;
但是,我只得到了本地主机 IP 127.0.0.1
。我需要服务器的公共 IP 地址。 PHP中有什么函数可以获取我从这个站点获得的公共IP地址:http://www.whatismyip.com/
【问题讨论】:
这是你本地测试时的ip地址 @JohnConde 所以,我不能获取全球 IP 地址吗? 您将获得发出请求的 IP。如果您在本地提出请求,127.0.0.1
是您的 IP。如果您可以以某种方式将流量路由到本地网络之外,您将看到一个外部 IP。
【参考方案1】:
如果您在运行浏览器客户端的同一台机器或本地 LAN 上运行 Web 服务器,则无法通过这种方式获取您的 IP 地址,您将始终获得本地 IP 地址。
如果您仍然想从 PHP 脚本中获取您的公共地址,在与您的浏览器客户端在同一网络中运行的 *nix 服务器上,您可以通过如下命令获取它:
$myPublicIP = trim(shell_exec("dig +short myip.opendns.com @resolver1.opendns.com"));
echo "My public IP: ".$myPublicIP;
【讨论】:
而且解决得非常快!谢谢! 这工作 100% 谢谢。我的电脑在 Ubuntu 20.04 X64 上运行 XAMPP以上是关于如何使用 PHP 获取服务器的公共 IP 地址?的主要内容,如果未能解决你的问题,请参考以下文章
如何在servlet java中获取客户端公共IP地址[重复]