免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 4803 | 回复: 18
打印 上一主题 下一主题

[原创分析] phpSYsInfo无法正常使用时Uptime为何显示而且很大 [复制链接]

论坛徽章:
1
技术图书徽章
日期:2013-12-05 23:25:45
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2005-11-01 10:07 |只看该作者 |倒序浏览
[代码分析] phpSYsInfo无法正常使用时Uptime为何显示而且很大

    问题的来源: http://bbs.chinaunix.net/viewthread.php?tid=638346&extra=page%3D1
    问题的图片: http://bsdroot.dns0755.net/images/phpsysinfo.gif
  
    首先,我们来看: uptime为13083天9分钟

    我们简单计算: 13083/365= 35.84年
                          1970 + 35.84 = 2005.84年
                          0.84*12 = 10.08
    当然我这是非常粗俗的计算而已。

    实际的原因呢?

    以下以FreeBSD为例子:
  
    如果你会php,而且你研究过phpSysInfo的实现,那么,我们开始:

    打开1: /path/to/phpsysinfo/includes/os/class.BSD.common.inc.php

    打开2: /path/to/phpsysinfo/includes/os/class.FreeBSD.inc.php

    从1的uptime部分的定义:
  1.   function uptime () {
  2.     $sys_ticks = $this->get_sys_ticks();
复制代码

   
    我们回到2查看get_sys_ticks的定义:
  1.   function get_sys_ticks () {
  2.     $s = explode(' ', $this->grab_key('kern.boottime'));
  3.     $a = ereg_replace('{ ', '', $s[3]);
  4.     $sys_ticks = time() - $a;
  5.     return $sys_ticks;
  6.   }
复制代码


    我们再回到1查看grab_key的定义:
  1.   // grabs a key from sysctl(8)
  2.   function grab_key ($key) {
  3.     return execute_program('sysctl', "-n $key");
  4.   }
  5.    
复制代码


    很明显,如果无权操作sysctl或者权限不够,那么必然grab_key返回无效的数据。

    get_sys_ticks里面返回的uptime的timestamp就为:time()

    显然:uptime 返回的就为当前的time()了

    而这个time是从1970年开始计算的。

    到此,我想,大家都明白为什么了吧。




   问题的图片:

[ 本帖最后由 HonestQiao 于 2005-11-1 10:11 编辑 ]

论坛徽章:
0
2 [报告]
发表于 2005-11-01 10:11 |只看该作者

论坛徽章:
1
技术图书徽章
日期:2013-12-05 23:25:45
3 [报告]
发表于 2005-11-01 10:12 |只看该作者
呵呵,因为你那个帖子所引出来的啊。

虽然很久以前我就研究过

论坛徽章:
0
4 [报告]
发表于 2005-11-01 10:15 |只看该作者
原帖由 HonestQiao 于 2005-11-1 10:12 发表
呵呵,因为你那个帖子所引出来的啊。

虽然很久以前我就研究过



可我没说UPTIME啊。。。。。……

论坛徽章:
0
5 [报告]
发表于 2005-11-01 10:17 |只看该作者
既然这样,那楼主应该做个PATCH给人家啊。免得有人拿这个到处招摇撞骗

论坛徽章:
1
技术图书徽章
日期:2013-12-05 23:25:45
6 [报告]
发表于 2005-11-01 10:24 |只看该作者
这个是apache+php没有配置好权限的问题,并不是一个bug啊。

论坛徽章:
2
丑牛
日期:2013-09-29 09:47:222015七夕节徽章
日期:2015-08-21 11:06:17
7 [报告]
发表于 2005-11-01 10:26 |只看该作者
uptime不算,其他的哪?

论坛徽章:
0
8 [报告]
发表于 2005-11-01 10:26 |只看该作者
原帖由 HonestQiao 于 2005-11-1 10:24 发表
这个是apache+php没有配置好权限的问题,并不是一个bug啊。



难道要root?

论坛徽章:
1
技术图书徽章
日期:2013-12-05 23:25:45
9 [报告]
发表于 2005-11-01 10:30 |只看该作者
原帖由 海鹰 于 2005-11-1 10:26 发表



难道要root?


当然需要root权限才可以的,否则很多新戏你都读取不到的。

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
10 [报告]
发表于 2005-11-01 11:37 |只看该作者
一点技术含量都。。。有
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP