PHP跨平台获取服务器IP地址自定义函数分享
近期需要完善一个log机制,监控来自不同服务器的机器的脚本执行状况,特针对windows和Linux及web与命令行模式书写了一个函数来兼容。
写了如下一个function来,可以实现上面的需求:
functiongetServerAddr(){
//运行webapp
if(isset($_SERVER["SERVER_ADDR"])){
return$_SERVER["SERVER_ADDR"];
}else{//RunningCLI
if(stristr(PHP_OS,'WIN')){
// 针对windows服务器所执行的一种hacky方式
exec("ipconfig/all",$catch);
foreach($catchas$line){
$new_catch[]=iconv("gbk","utf-8",$line)."\n";
}
foreach($new_catchas$new_line){
if(preg_match(‘/IPv4地址/',$new_line)){//中文系统
list($t,$ip)=explode(‘:',$new_line);
$ip=trim($ip);
preg_match(‘/((?:(?:25[0-5]|2[0-4]\d|((1\d{2})|([1-9]?\d)))\.){3}(?:25[0-5]|2[0-4]\d|((1\d{2})|([1-9]?\d))))/',$ip,$match);
return$match[1];
}
}
}else{
$ifconfig=shell_exec(‘/sbin/ifconfigeth0′);
preg_match(‘/addr:([\d\.]+)/',$ifconfig,$match);
return$match[1];
}
}
}
$ip=getServerAddr();
print$ip;