我需要获取计算机的本地IP地址,例如192.*.... 是否可以使用PHP实现?
我需要获得运行该脚本的系统的IP地址,但我不需要外部IP地址,我需要它的本地网络卡地址。
我需要获取计算机的本地IP地址,例如192.*.... 是否可以使用PHP实现?
我需要获得运行该脚本的系统的IP地址,但我不需要外部IP地址,我需要它的本地网络卡地址。
$localIP = gethostbyname(trim(exec("hostname")));
我在Windows电脑上尝试过,可以正常工作,并且认为它也可以在Linux上运行。
这很简单。您可以使用这段简单的代码获取主机名。
$ip = getHostByName(getHostName());
或者您也可以使用$_SERVER ['HTTP_HOST']
来获取主机名。
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 地址。
$_SERVER['SERVER_NAME']
这对我来说行得通。
$exec = 'ipconfig | findstr /R /C:"IPv4.*"';
exec($exec, $output);
preg_match('/\d+\.\d+\.\d+\.\d+/', $output[0], $matches);
print_r($matches[0]);
获取服务器的公共IP:
$publicIP = getHostByName($_SERVER['HTTP_HOST']);
echo $publicIP;
// or
$publicIP = getHostByName($_SERVER['SERVER_NAME']);
echo $publicIP;
$publicIP = file_get_contents('https://api.ipify.org/');
echo $publicIP;
// or
$publicIP = file_get_contents('http://checkip.amazonaws.com/');
echo $publicIP;
$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
如果您正在使用OS X上的开发环境,并通过Wifi连接:
echo exec("/sbin/ifconfig en1 | grep 'inet ' | cut -d ' ' -f2");
获取本地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'));
}
需要注意两点:
array("\n", "\t", "\r")
你必须使用引号而不是撇号,否则它将无法删除回车符。不确定为什么.... "\t"
确实不需要....获取 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);
}