5

我正在尝试安装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

我尝试将 sudo(permissions) 赋予该/var/www/文件夹,并尝试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));
    }
}*/

但是,我还没有成功。任何关于我如何克服这个问题的想法都将不胜感激!

4

5 回答 5

5

您可以自己创建目录。

我假设您使用的是 Ubuntu 或 Debian。从在 Ubuntu 中安装 Moodle的分步指南:

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

www-data您的网络服务器使用的用户在哪里。

于 2013-09-12T07:17:13.923 回答
2

正如你提到的

/var

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

如果您在

/var/www

这个位置不安全,因为它可以很容易地从 Web 访问。数据可能被盗。

于 2013-11-07T10:53:58.733 回答
2

请注意Moodle 2.6 安装指南中的这一行;

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

在您的服务器上的一个目录中创建“moodledata”目录,该目录不能通过网络公开访问,即不在您的 httpdocs 或公共目录中。

于 2014-03-24T13:51:25.083 回答
1

我试过这个,它对我有用试试这个..,

在moodle root中去install.php,如果您在第341行或其他版本中使用2.6或其他版本搜索is_dataroot_insecure()功能并将其更改为falseelse if条件并尝试再次安装,就是这样..,(注意这不是最好的这样做的方法,但如果你愿意,可以通过编码破解来摆脱这个错误。)

于 2014-02-24T05:00:14.383 回答
0

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

sudo mkdir /var/moodledata

chmod ugoa=rwx /var/moodledata

于 2021-07-02T22:02:15.703 回答