如何使用 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地址[重复]

markdown 如何快速获取服务器的公共IP地址?

如何在C#中获取用户的公共IP地址

如何使用 Ruby SDK 从 AWS 获取公共 IP 地址

如何以编程方式获取公共 IP 地址?

如何使用powershell获取EC2实例的公共IP和私有IP地址?并列出这些实例的IP