80535

extension模块上传插件写权限检查的问题

回帖
回帖数 9
阅读数 2474
发表时间 2011-12-08 13:42:03
🥓
王延之楼主

原因无非还是我自己开发插件时遇到的

 

具体前面两个帖子可以参见http://www.zentao.net/thread-view-80516.htmlhttp://www.zentao.net/ask-view-686.html

 

禅道提示:

安装插件::info

安装失败,错误原因如下:

目标路径 E:\Apache Software Foundation\Apache2.2\htdocs\zentaopms\module/info/js 不存在。
目标路径 E:\Apache Software Foundation\Apache2.2\htdocs\zentaopms\module/info/lang 不存在。
目标路径 E:\Apache Software Foundation\Apache2.2\htdocs\zentaopms\module/info/view 不存在。

执行下面的命令来修正这些问题:

mkdir -p E:\Apache Software Foundation\Apache2.2\htdocs\zentaopms\module\info\js
mkdir -p E:\Apache Software Foundation\Apache2.2\htdocs\zentaopms\module\info\lang

mkdir -p E:\Apache Software Foundation\Apache2.2\htdocs\zentaopms\module\info\view

 

*******************

 

首先,这个问题和目录名无关,其次,确实是因为没有写权限造成的.那我为什么还说是问题呢?

 

在extension的model.php中的checkExtensionPathes函数中有如下代码:

............

$pathes  = $this->getPathesFromPackage($extension);

        foreach($pathes as $path)

        {

            if($path == 'db' or $path == 'doc' or $path == 'hook') continue;

            $path = $appRoot . $path;

            if(is_dir($path))

            {

                if(!is_writable($path))

                {

                    $return->errors .= sprintf($this->lang->extension->errorTargetPathNotWritable, $path) . '<br />';

                    $return->chmodCommands .= "sudo chmod -R 777 $path<br />";

                }

            }

            elseif(!is_writable(dirname($path)))

            {

                echo js::alert(dirname($path));        //测试部分

                $return->errors .= sprintf($this->lang->extension->errorTargetPathNotExists, $path) . '<br />';

                $return->mkdirCommands .= "mkdir -p $path<br />";

                $return->chmodCommands .= "sudo chmod -R 777 $path<br />";

                $return->dirs2Created[] = $path;

            }

        }

..........

可见到我在检测是否有权限的地方加了测试

我的info模块具有如下目录树

info

  |---js

  |   |--browse.js

  |---lang

  |     |---...

  |---view

  |     |---...

  |---control.php

  |---...

之所以提示报js,lang,view不存在的原因是发现info目录没有写权限,这点我不否认

原因是...info还没建立呢...所以/module/info不存在,当然没有写权限,但并不代表module没有写权限

 

所以我认为这是bug,如果用户开发了一个插件,这样的目录结构是很正常的

我把你们的helloworld plugin.zip插件稍加改造,在hello目录中添加了lang目录,并存有一个php文件后,也造成了同样的问题

因为hello不存在!怎么能检查/module/hello是否有写权限呢?

 

耽误你们时间了望见谅,但我认为这确实是一个bug

9个回复
🍟
春哥沙发
维持现状。不做处理。
2011-12-08 13:56:28 王春生 回帖
🥓
王延之板凳

我验证过,只要有info目录,立马就可以安装成功

那也就意味着,如果用户开发我这样的插件,用户必须自己建一个info目录(info目录为用户自己开发的插件)

 

并不是没有权限啊,是判断机制有问题啊,module有绝对的权限啊

 

这样对开发插件的人来说很不方便,也对用户来说体验很差

说得难听点,这样的插件机制就会显得鸡肋了

2011-12-08 14:24:37 王延之 最后编辑 2011-12-08 14:24:37 王延之 回帖
🥓
王延之#3
顺带提一句,2.4对主配置的扩展功能的支持是对插件开发的很大的支持!希望插件扩展可以越来越便利
2011-12-09 09:31:02 王延之 回帖

既然很不方便,用户体验很差,鸡肋,你可以不用来开发插件!

有事说事,扯这么多大帽子做什么?

你去找找比我们做得更好的插件机制,找找看。

 

请客观描述问题,不要加那么多的主管色彩!再这样,自己玩去吧,懒得理你了。

2011-12-09 09:40:21 王春生 最后编辑 2011-12-09 09:40:21 王春生 回帖
🥓
王延之#5

wordpress

我在禅道上开发插件又不是为了赚钱.只是工作和兴趣驱使的.

只是简单的一个忠恳的意见而已.我说话比较直,没必要较真

淡定点.你们自己的模块,随便找一个,bug模块,目录下有css,js,lang,view目录

开发者开发一个插件也很有可能有这样的目录结构啊.

 

无意制造事端,只是希望一个产品能越做越好,只是提意见.并没说你们必须接受

 

类似:我不认同你的观点,但我尊重你说话的自由

2011-12-09 10:07:21 王延之 最后编辑 2011-12-09 10:07:21 王延之 回帖
🥓
王延之#6

顺便说一句,action的回收站有bug

比如删除文档库,它显示的链接指向的是doclib模块

2011-12-09 10:08:37 王延之 回帖
:),虽然你说这些,我们有点不爽,但你说得有道理,下个版本解决。
2011-12-12 09:35:09 王春生 回帖
🥓
王延之#8

谢谢您的支持,我说话比较直也一直是我存在的问题.

如有得罪,希望谅解.

祝禅道与贵公司越做越好

2011-12-12 10:34:16 王延之 回帖
。:)
2011-12-12 22:04:58 王春生 回帖
联系我们
联系人
魏中显/高级客户经理
电话(微信)
18561939726
QQ号码
1746749398
联系邮箱
weizhongxian@chandao.com
相关帖子
返回顶部
客服头像
魏中显
高级客户经理
客服微信
18561939726
1746749398
统一服务热线 4006-8899-23
我要提问提问有任何问题,您都可以在这里提问。问题反馈反馈点击这里,让我们聆听您的建议与反馈。