我试图安装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));
}
}*/
然而,我没有取得任何成功。任何关于我如何能够过来的想法都将不胜感激!
答案 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