PHP跨平台获取服务器IP地址自定义函数分享


Posted in PHP onDecember 29, 2014

近期需要完善一个log机制,监控来自不同服务器的机器的脚本执行状况,特针对windows和Linux及web与命令行模式书写了一个函数来兼容。

写了如下一个function来,可以实现上面的需求:

function getServerAddr() {   

    //运行 web app   

    if (isset($_SERVER["SERVER_ADDR"])) {   

        return $_SERVER["SERVER_ADDR"];   

    } else { // Running CLI   

        if (stristr(PHP_OS, 'WIN')) {   

            //  针对windows服务器所执行的一种hacky方式    

            exec("ipconfig /all", $catch);   

            foreach ($catch as $line) {   

                $new_catch[] = iconv("gbk", "utf-8", $line) . "\n";   

            }   

            foreach ($new_catch as $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/ifconfig eth0′);   

            preg_match(‘/addr:([\d\.]+)/', $ifconfig, $match);   

            return $match[1];   

        }   

    }   

}   

  

$ip = getServerAddr();   

print $ip;
PHP 相关文章推荐
php中将网址转换为超链接的函数
Sep 02 PHP
PHP求小于1000的所有水仙花数的代码
Jan 10 PHP
php.ini修改php上传文件大小限制的方法详解
Jun 17 PHP
完美解决thinkphp验证码出错无法显示的方法
Dec 09 PHP
PHP面向对象程序设计之类与反射API详解
Dec 02 PHP
[原创]php实现 data url的图片生成与保存
Dec 04 PHP
使用ThinkPHP生成缩略图及显示
Apr 27 PHP
thinkphp分页集成实例
Jul 24 PHP
PHP CURL与java http使用方法详解
Jan 26 PHP
Thinkphp5框架实现获取数据库数据到视图的方法
Aug 14 PHP
laravel 框架结合关联查询 when()用法分析
Nov 22 PHP
php高性能日志系统 seaslog 的安装与使用方法分析
Feb 29 PHP
PHP中使用xmlreader读取xml数据示例
Dec 29 #PHP
php读取远程gzip压缩网页的方法
Dec 29 #PHP
php导入大量数据到mysql性能优化技巧
Dec 29 #PHP
推荐几个开源的微信开发项目
Dec 28 #PHP
dedecms集成财付通支付接口
Dec 28 #PHP
VPS中使用LNMP安装WordPress教程
Dec 28 #PHP
php随机取mysql记录方法小结
Dec 27 #PHP
You might like
PHP创建PowerPoint2007文档的方法
2015/12/10 PHP
浅谈PHP拦截器之__set()与__get()的理解与使用方法
2016/10/18 PHP
php preg_match的匹配不同国家语言实例
2016/12/29 PHP
PHP实现的敏感词过滤方法示例
2019/03/06 PHP
两个select之间option的互相添加操作(jquery实现)
2009/11/12 Javascript
js导出table数据到excel即导出为EXCEL文档的方法
2013/10/10 Javascript
Jquery实现图片放大镜效果的思路及代码(自写)
2013/10/18 Javascript
js跨域访问示例(客户端/服务端)
2014/05/19 Javascript
js实现人民币大写金额形式转换
2016/04/27 Javascript
纯JS打造网页中checkbox和radio的美化效果
2016/10/13 Javascript
详解jQuery中ajax.load()方法
2017/01/25 Javascript
Dropify.js图片宽高自适应的方法
2017/11/27 Javascript
基于vue,vue-router, vuex及addRoutes进行权限控制问题
2018/05/02 Javascript
对VUE中的对象添加属性
2018/09/18 Javascript
使用Node.js在深度学习中做图片预处理的方法
2019/09/18 Javascript
vue双向绑定数据限制长度的方法
2019/11/04 Javascript
javascript canvas API内容整理
2020/02/16 Javascript
python基于右递归解决八皇后问题的方法
2015/05/25 Python
python脚本爬取字体文件的实现方法
2017/04/29 Python
对Python实现简单的API接口实例讲解
2018/12/10 Python
浅谈Python反射 & 单例模式
2019/03/21 Python
Python学习笔记之For循环用法详解
2019/08/14 Python
Sofmap官网:日本著名的数码电器专卖店
2017/05/19 全球购物
sort命令的作用和用法
2012/11/04 面试题
总经理秘书工作职责
2013/12/26 职场文书
人事部经理岗位职责
2014/03/07 职场文书
高中生班主任评语
2014/04/25 职场文书
活动总结报告范文
2014/05/04 职场文书
说好普通话圆梦你我他演讲稿
2014/09/21 职场文书
迟到检讨书2000字(精选篇)
2014/10/07 职场文书
辞职信格式模板
2015/02/27 职场文书
学校党员干部承诺书
2015/05/04 职场文书
党支部对转正的意见
2015/06/02 职场文书
Python数据清洗工具之Numpy的基本操作
2021/04/22 Python
深入理解redis中multi与pipeline
2021/06/02 Redis
CSS3实现360度循环旋转功能
2022/02/12 HTML / CSS