PHP如何获取系统的本地IP地址

113

我需要获取计算机的本地IP地址,例如192.*.... 是否可以使用PHP实现?

我需要获得运行该脚本的系统的IP地址,但我不需要外部IP地址,我需要它的本地网络卡地址。

23个回答

5
$localIP = gethostbyname(trim(exec("hostname")));

我在Windows电脑上尝试过,可以正常工作,并且认为它也可以在Linux上运行。


4

这很简单。您可以使用这段简单的代码获取主机名。

$ip = getHostByName(getHostName());

或者您也可以使用$_SERVER ['HTTP_HOST']来获取主机名。


3

For Windows:

exec('arp -a',$sa);
$ipa = [];
foreach($sa as $s)
    if (strpos($s,'Interface:')===0)
        $ipa[] = explode(' ',$s)[1];

print_r($ipa);

$ipa 数组返回系统的所有本地 IP 地址。


3
$_SERVER['SERVER_NAME']

这对我来说行得通。


3
在Windows操作系统中,
$exec = 'ipconfig | findstr /R /C:"IPv4.*"';
exec($exec, $output);
preg_match('/\d+\.\d+\.\d+\.\d+/', $output[0], $matches);
print_r($matches[0]);

1

获取服务器的公共IP:

$publicIP = getHostByName($_SERVER['HTTP_HOST']);
echo $publicIP;

// or

$publicIP = getHostByName($_SERVER['SERVER_NAME']);
echo $publicIP;

如果您的系统中没有这些全局变量或者您在局域网中,您可以查询外部服务以获取您的公共IP地址:
$publicIP = file_get_contents('https://api.ipify.org/');
echo $publicIP;

// or

$publicIP = file_get_contents('http://checkip.amazonaws.com/');
echo $publicIP;

1
我调试了这个针对服务器端的php问题(在Linux终端上运行)
我使用“ifconfig”命令并截取了IP地址。
以下是代码:
$interface_to_detect = 'wlan0';
echo explode(' ',explode(':',explode('inet addr',explode($interface_to_detect,trim(`ifconfig`))[1])[1])[1])[0];

当然,将“wlan0”更改为您所需的网络设备。

我的输出是:

192.168.1.5

0

如果您正在使用OS X上的开发环境,并通过Wifi连接:

echo exec("/sbin/ifconfig en1 | grep 'inet ' | cut -d ' ' -f2");

0

获取本地IPv4地址,已在RHEL上进行测试:

function getLocalIPv4(){
    return str_replace(array("\n", "\t", "\r"),'',shell_exec("nmcli | grep inet4 | awk '{print $2}' | cut -d/ -f1 2>&1"));
}

更好的是,已在RHEL上进行了测试:

function getLocalIPv4(){
    return str_replace(array("\n", "\t", "\r", ' '),'',shell_exec('hostname -I 2>&1'));
}

需要注意两点:

  1. array("\n", "\t", "\r") 你必须使用引号而不是撇号,否则它将无法删除回车符。不确定为什么.... "\t" 确实不需要....
  2. 此函数只适用于一个接口

0

获取 PHP / Windows 上所有系统 IP 的函数。

function GetIPs(){
    $sa = explode("\n",shell_exec('ipconfig'));
    $ipa = [];
    foreach($sa as $i){
        if (strpos($i,'IPv4 Address')!==false){
            $ipa[] = trim(explode(':', $i)[1]);
        }
    }
    return($ipa);
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接