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

时间:2017-06-28 11:11:33

标签: php moodle

你好亲爱的朋友们,我有一个问题Moodle 3.3+的问题 Moodle无法创建数据目录" moodledata"在public_html之外......

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

所以我决定更改数据目录位置(public_html / moodledata /),但moodle安装说" Dataroot位置不安全" ...然后我做了chomd那个目录" 770& #34;我还将.htaccess文件放在:order deny,allow deny from all

我得到了相同的结果:" Dataroot位置不安全"

现在我需要禁用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;

}

如何正确禁用它? (当然,我想以自己的风险来做,我是......)

谢谢大家先进, 祝福!

2 个答案:

答案 0 :(得分:2)

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

function is_dataroot_insecure($fetchtest=false) {

    return false; // CORE MODIFICATION - disable checks

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

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

我会强烈建议你找一个更好的托管服务提供商,因为这个不适合托管Moodle网站。如果您只有少量用户,则免费的Moodle Cloud帐户可能是合适的解决方案。否则,您可以考虑使用Moodle Partner支付托管费用。

答案 1 :(得分:0)

这不是最好的方法,但是如果希望尝试,请编写代码来摆脱该错误。

在moodle根目录中进入install.php,如果在第341行或其他版本中使用2.6,则搜索is_dataroot_insecure()函数,然后在else if条件下将其更改为false,然后尝试再次安装。 ,

enter image description here