修改PHP探针一些小BUG

前面,我把PHP运行环境都搭建完成,为了检验一下成果,装了一个PHP探针(B-Check v0.05.2)。

显示基本正常,就是前面有两句错误。

session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /var/www/inpublisher/php1.php:1)

session_start()是一个会话函数,执行一些必要的参数初始化,赋值等。

session_start() 产生错误提示,原因有多种:

1、session_start(); 必须在所有语句最前面。

2、没有指定存储session的目录。

解决方法是:

a、在php.ini文件中,找到session.save_path,给它指定一个目录,这个目录必须实际存在。

session.save_path = "e:/web/tmp"

b、初始化设为允许 session.auto_start = 1

; Initialize session on request startup.
session.auto_start = 1

重启WEB服务,刷新后就没有session_start 错误提示了。

还有个小BUG就是,B-Check v0.05.2 PHP探针获取ZendOptimizer 版本号,而ZendOptimizer 确实已经安装成功,这在phpinfo.php页面可以看到。

如何解决?方法如下:

将以下语句:

//获取Zend Optimizer版本,方法参考了废墟のPHP探针
function checkoptimizer()
{
 $url= "http://".$_SERVER['SERVER_NAME'].$_SERVER['PHP_SELF']."?action=phpinfo";
 $htmlct=file_get_contents($url);
 eregi("Optimizer v(.*), Copyright", $htmlct, $regs);
 $optimizerversion=$regs[1];
 $optimizerversion=(''!=$optimizerversion)?$optimizerversion:"<font color=red>获取失败!</font>";
 return $optimizerversion;
}

修改为:

//获取Zend Optimizer版本,方法参考了废墟のPHP探针
function checkoptimizer()
{
 $optimizerversion=OPTIMIZER_VERSION;
 $optimizerversion=(""!=$optimizerversion)?$optimizerversion:"<font color=red>获取失败!</font>";
 return "v".$optimizerversion;
}

原来,它是用正则表达式截取Url的ZendOptimizer 版本号,但实际上action=phpinfo是一个漏洞,已被PHP修补,用这种方法当然获取不到信息。

正确方法,用PHP内置常量OPTIMIZER_VERSION,直接来取得ZendOptimizer 版本号,就可以了。

评论恒久远,一贴永流传

提交

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

帮助他人 - 快乐自己

最近发表

Search

热门文章

随机推荐

网站收藏

增值服务

Top

Powered By Z-Blog 1.8 Walle Build 100427 wedding dresses

© 2007-2010 zfnn.com. 皖ICP备07503469号