如何在 Moodle 3.3+ 安装中禁用数据目录检查

How To Disable Data Directory Check in Moodle 3.3+ Installation

你好亲爱的朋友我有安装 Moodle 3.3+ 的问题 Moodle 无法在 public_html...

之外创建数据目录 "moodledata"

像往常一样,默认情况下安装 moodle 时它会在 public_html 之外创建数据目录。我就这个问题联系了我的主机。他们说出于安全原因他们不会让我创建public_html...

之外的 moodledata 目录

所以我决定更改数据目录位置 (public_html/moodledata/),但是 moodle 安装显示 "Dataroot location is not secure"... 然后我选择了那个目录“770”,我也把.htaccess 文件:order deny,allow deny from all

我得到了相同的结果:"Dataroot location is not secure"

现在我需要禁用 moodle dataroot 安装安全检查..

我做了一些更改但出现错误...

代码如下:

//first time here? find out suitable dataroot

if (is_null($CFG->dataroot)) { $CFG->dataroot = DIR.'/../moodledata';

$i = 0; //safety check - dirname might return some unexpected results
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).DIRECTORY_SEPARATOR.'moodledata';
}
$config->dataroot = $CFG->dataroot;
$config->stage    = INSTALL_WELCOME;

}

如何正确禁用它? (当然我想自己承担风险,我是)..

谢谢大家在高级, 致以最良好的祝愿!

强制检查通过的最简单方法是打开 lib/adminlib.php,找到函数 is_dataroot_insecure() 并在函数的开头添加以下内容功能:

function is_dataroot_insecure($fetchtest=false) {

    return false; // CORE MODIFICATION - disable checks

    ... the original function code appears here ...

也就是说,从安全角度来看,这是一个非常糟糕的主意 - 它可能会允许 Internet 上的任何人浏览您 Moodle 站点中的文件。

我会强烈建议您找一个更好的托管服务提供商,因为这听起来不适合托管 Moodle 网站。如果您只有少量用户,那么免费 Moodle Cloud account might be a suitable solution. Otherwise, you could consider paying for hosting with a Moodle Partner.

这不是最好的方法但是如果你喜欢的话,编码破解只是为了摆脱这个错误..,

在 moodle root 中转到 install.php 如果您在第 341 行或其他版本中使用 2.6 搜索 is_dataroot_insecure() 函数并在 else if 条件下将其更改为 false 并尝试再次安装,然后..,