在 PHP 中获取特定以太网端口的专用 IP 地址



我在服务器上运行了 PHP coe。我想要本地系统的 IP 地址。这个问题之前已经问过 - PHP 如何获取系统的本地 IP

当我使用上面帖子中提到的任何解决方案时,我只能获取主机名,而不是 IP 地址。

例如,在我的机器上,我有

eth0:10.0.2.15
eth1:192.168.1.115

当我运行以下代码时:

$localIP = getHostByName(getHostName());

我只得到主机名 - localvm.我要192.168.1.115

我可以获取私有 IP 地址吗?

更具体地说,我可以获取特定端口的 IP 地址吗?

您可以使用以下内容获取 Linux 中特定网络端口的 IP 地址:

function getInterfaceIP($interface = 'eth0')
{
        $interfaceCommand = "/sbin/ifconfig " . $interface . " | grep 'inet addr:' | cut -d: -f2 | awk '{ print $1 }'";
        $output = exec($interfaceCommand);
        return $output;
}
echo getInterfaceIP('eth0');

请注意,命令语法可能因操作系统而异。此示例适用于 Linux。PHP 没有任何内置类来执行此操作。

您可能希望添加另一个命令 - 获取所有可用网络接口的列表('ifconfig -s' 提供这些接口)。

接受的答案是正确的。但是,如果有人正在使用AWS云或Openstack,他可以利用cloud-init工具(已经存在)并使用魔术IP检索本地IP地址,如下所示:

curl http://169.254.169.254/latest/meta-data/local-ipv4/

最新更新