安装moodle时出错。数据库位置不安全,父目录(/ var)不可写。

时间:2013-09-11 19:45:37

标签: php moodle

我试图安装moodle但是当我指定moodle数据文件夹的路径时,我在这个过程中遇到了错误。基本上他们希望它在一个无法从网上访问的地方。

我已经尝试将其放入/var/moodledata,这给我一个错误说 Parent directory (/var) is not writeable. Data directory (/var/moodledata) cannot be created by the installer./var/www/moodledata,这给了我一个错误Dataroot location is not secure

我尝试向/var/www/文件夹提供sudo(权限),并尝试通过注释掉以下行来攻击install.php以跳过验证

/*while(is_dataroot_insecure()) {
    $parrent = dirname($CFG->dataroot);
    $i++;
    if ($parrent == '/' or $parrent == '.' or preg_match('/^[a-z]:\\\?$/i', $parrent) or ($i > 100)) {
        $CFG->dataroot = ''; //can not find secure location for dataroot
        break;
    }
    $CFG->dataroot = dirname($parrent).'/moodledata';
}*/

       /* do {
        if ($CFG->dataroot !== '') {
            $prompt = get_string('clitypevaluedefault', 'admin', $CFG->dataroot);
        } else {
            $prompt = get_string('clitypevalue', 'admin');
        }
        echo $error;
        $CFG->dataroot = cli_input($prompt, $CFG->dataroot);
        if ($CFG->dataroot === '') {
            $error = get_string('cliincorrectvalueretry', 'admin')."\n";
        } else if (is_dataroot_insecure()) {
            $CFG->dataroot = '';
            $error = get_string('pathsunsecuredataroot', 'install')."\n";
        } else {
            if (install_init_dataroot($CFG->dataroot, $CFG->directorypermissions)) {
                $error = '';
            } else {
                $a = (object)array('dataroot' => $CFG->dataroot);
                $error = get_string('pathserrcreatedataroot', 'install', $a)."\n";
        cli_error(get_string('pathsunsecuredataroot', 'install'));
            }
        }

    } while ($error !== '');*/
} /*else {
    if (is_dataroot_insecure()) {
    }
    if (!install_init_dataroot($CFG->dataroot, $CFG->directorypermissions)) {
        $a = (object)array('dataroot' => $CFG->dataroot);
        cli_error(get_string('pathserrcreatedataroot', 'install', $a));
    }
}*/

然而,我没有取得任何成功。任何关于我如何能够过来的想法都将不胜感激!

5 个答案:

答案 0 :(得分:3)

您可以自己创建目录。

我假设您使用的是Ubuntu或Debian。从step-by-step guide到Ubuntu安装Moodle:

sudo mkdir /var/moodledata
sudo chown -R www-data:www-data /var/moodledata

www-data是您的网络服务器使用的用户。

答案 1 :(得分:2)

请注意Moodle 2.6 installation guide;

中的这一行
  

重要提示:不得直接通过网络访问此目录。   这将是一个严重的安全漏洞。不要试图把它放在里面   您的Web根目录或Moodle程序文件目录中。 Moodle的   不会安装。它可以去其他方便的地方。

创建'moodledata'服务器上目录中的目录,该目录不能通过Web公开访问,也不能在httpdocs或公共目录中访问。

答案 2 :(得分:1)

如你所说

  

/ VAR

此位置不可写,因此Web服务器在此处没有写入权限,因此不会在那里创建moodledata。确保Web服务器具有写入权限。

如果您在

中创建moodledata
  

/无功/网络

此位置不安全,因为它可以轻松地从网络访问。数据可能被盗。

答案 3 :(得分:1)

我试过这个,它为我工作试试这个..,

在moodle root中转到install.php,如果你在第341行或其他版本中使用2.6,则搜索is_dataroot_insecure()函数并在else if条件下将其更改为false并尝试再次安装,就是这样..,(注意这不是最好的方法,但编码黑客只是为了摆脱这个错误,如果你喜欢尝试..)

答案 4 :(得分:0)

尝试从终端 Debian 用户运行以下命令

sudo mkdir /var/moodledata

chmod ugoa=rwx /var/moodledata