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;