关于OneThink 1.0.131129开发版的安装检测文件权限bug

来源:互联网 发布:gta5a卡优化 编辑:程序博客网 时间:2024/05/17 22:37

thinkphp是国内的一款php框架,也有一大批网站在用这个框架了。

但是总觉得thinkphp团队并没有对其进行严格的测试,在使用过程中问题频出。

最近thinkphp团队推出了基于该框架的cms系统onethink,试用了一下,刚开始在安装的时候就出现了问题。

在linux版本下,onethink在检测文件目录权限时,文件夹没有写权限,却被判为了不存在。

/** * 目录,文件读写检测 * @return array 检测数据 */function check_dirfile(){    $items = array(        array('dir',  '可写', 'success', './Uploads/Download'),        array('dir',  '可写', 'success', './Uploads/Picture'),        array('dir',  '可写', 'success', './Uploads/Editor'),        array('dir',  '可写', 'success', './Runtime'),        array('dir', '可写', 'success', './Application/User/Conf'),        array('file', '可写', 'success', './Application/Common/Conf/config.php'),    );    foreach ($items as &$val) {        if('dir' == $val[0]){            if(!is_writable(INSTALL_APP_PATH . $val[3])) {                if(is_dir($items[1])) {                    $val[1] = '可读';                    $val[2] = 'error';                    session('error', true);                } else {                    $val[1] = '不存在';                    $val[2] = 'error';                    session('error', true);                }            }        } else {            if(file_exists(INSTALL_APP_PATH . $val[3])) {                if(!is_writable(INSTALL_APP_PATH . $val[3])) {                    $val[1] = '不可写';                    $val[2] = 'error';                    session('error', true);                }            } else {                if(!is_writable(dirname(INSTALL_APP_PATH . $val[3]))) {                    $val[1] = '不存在';                    $val[2] = 'error';                    session('error', true);                }            }        }    }    return $items;}

在上述代码的foreach循环中,判断文件夹是否有写权限当然不能用一个is_dir($items[1])了,应该判断该文件是否是文件夹并具可写权限。

is_dir(INSTALL_APP_PATH . $val[3]) && is_writable(INSTALL_APP_PATH . $val[3])

当然还有很多其它好玩的东西,后期可以展示给大家。

怎么样,是不是有点Damn Vulnerable Linux的味道,试试吧,你会爱上它的大笑


0 0
原创粉丝点击