禅道3.0.beta1插件安装清除文件bug补丁下载!

2012-01-10 20:43:44
王春生
转贴
6839
摘要:今天收到3群飞鸟网友的反馈,发现禅道3.0.beta1安装插件的时候,会把其所在分区的...

今天收到3群飞鸟网友的反馈,发现禅道3.0.beta1安装插件的时候,会把其所在分区的文件误删。这是一个非常严重的bug,感谢飞鸟网友的反馈,也非常抱歉,给大家造成不便和损失。

 

这个bug的缘由如下:

 

禅道插件安装的机制是从我们的网站下载插件包,然后将其解压缩到module/extension/ext目录下面。这样存在一个问题就是同一个插件的新版本安装的时候,也会解压缩到同样的目录,然后再拷贝到对应的目录里面去。这样就无法保证新版本插件安装时的目录和文件的纯粹性,因为可能还包含了老版本插件已经不再使用的文件或者目录。所以我们在3.0.beta1里面在安装插件之前,就增加了一个逻辑,先把extension/ext/xxx目录删掉。问题就出现在这个代码逻辑里面:

 

代码:module/extension/model.php

505 public function extractPackage($extension)
506 {
507 $return->result = 'ok';
508 $return->error = '';
509
510 /* try remove pre extracted files. */
511 $extensionPath = "ext/$extension";
512 $this->classFile->removeDir($extensionPath);

 

问题就出现在511行,如果是新安装一个插件的时候,ext/$extension这个目录其实不并存在,file.class.php里面的removeDir()方法会先尝试将传入的删除目录取realpath,然后再进行删除。而php里面的realpath方法对一个不存在的目录返回值为空,结果就变成了删除根目录。

 

我们平时的开发机都是在linux下面。linux下面的权限机制还是非常完善的,虽然是错误的操作,但其实并没有任何影响,所以就没有呈现不良的结果。但在windows下面,问题就出现了。apache运行所用的帐号往往是当前登录的帐号,就给删掉了。

 

如何解决这个bug呢,请下载附件里面的model.php,将其覆盖到禅道的model/extension/model.php,就可以了。

 

教训:

1. 不测试的代码肯定会有错误!

2. 跨平台的测试尤其关键。

3. 还是linux好。:)

 

再次向大家表示歉意,希望大家能够谅解。

 

禅道开发团队 2012年1月10日

下载提示

我们的下载服务由友情赞助,感谢七牛云的流量支持。

禅道使用问题交流,请先加 官方QQ: 说明来意后由群主邀请入群。

获取技术支持注意事项:http://www.xhtours.com/book/zentaopmshelp/70.html

欢迎关注我们的微博微信。

新浪微博:易软天创

微信公众号:易软天创

评论列表
Liem 2012-01-19 11:09:09
是不是路径弄错了?应是 module/extension/model.php
ct455332 2012-01-11 14:49:06
亏好,刚才在试验机上测试的...D盘什么都没剩下
wwccss 2012-01-11 14:30:43
不安装插件的话,不会有这个问题的。下载我们的补丁文件,来修复这个问题。
Jason 2012-01-11 11:20:50
这问题搞大了,开始的时候我安装在的笔记本的C盘,那天无缘无故的C盘空间变大,大部分软件没了,害得我重新安装了系统,具体问题没有找到,后来我将禅道安装到我们的服务器上,今天早上无意中发现E盘空间变大了60多个G,这样搞不行啊!
1/1
发表评论
评论通过审核后显示。
文章分类
联系我们

联系人:魏先生

电话:18561939726

Email:weizhongxian@cnezsoft.com

QQ:1746749398

地址:青岛开发区武夷山路167号千禧龙花园 9-1-101室

联系人:杨文斌

电话:17663906485

Email:yangwenbin@cnezsoft.com

QQ:1481227768

地址:青岛开发区武夷山路167号千禧龙花园 9-1-101室

联系人:毕女士

电话:13165056632

Email:bixiaomin@cnezsoft.com

QQ:3137772959

地址:青岛开发区武夷山路167号千禧龙花园 9-1-101室

联系人:杨苗

电话:13165050229

Email:yangmiao@cnezsoft.com

QQ:3142565561

地址:青岛开发区武夷山路167号千禧龙花园 9-1-101室