升级到Moodle 3.6后,调用未定义函数mysql_connect

时间:2019-01-17 08:48:19

标签: moodle

没有重复-请在底部查看解决方案

我已经进行了研究,发现的解决方案对我没有用,甚至没有主持人标记的“重复”解决方案,这与我的问题无关

注意::我很感谢所有评论,但是我不能像某些人建议的那样“更改我的代码”,这是Moodle,它应该在PHP 7.2和 mysqli 。这可能是我遗失的配置问题,还是某些错误使Moodle仍然使用 mysql ,即使我已将其设置为使用mysqli

我刚刚将Moodle 3.2网站升级到了Moodle 3.6。升级过程看似正常,但是我无法登录该站点,出现以下错误:

Exception - Call to undefined function mysql_connect()

旧站点曾经在PHP 5.6上运行,但是我已经升级了服务器的PHP 7.2并安装了所有必需的模块。我知道在PHP 7上已弃用 mysql ,并且根据网上发现的指示,在升级之前,我已将dbtype更改为 mysqli ,如此处所述:{{ 3}}。我已经在外部注册插件的网站管理区域(在Moodle升级之前)和数据库(在升级之后)进行了此更改。

我还在config.php中设置了$CFG->dbtype = 'mysqli';

进行Moodle升级后,网站加载正常,直到出现上述错误,直到我尝试登录为止。该站点对学生使用外部数据库身份验证,但是admin用户与Moodle位于同一数据库中(而不是外部数据库)。

关于如何解决此问题的任何想法?看起来该错误来自Moodle坚持使用 mysql 而不是 mysqli ,但我不知道还有什么要更改以防止这种情况...我也清除了缓存和重新启动的数据库服务无济于事。

这是尝试以管理员身份登录时的调试输出:

Debug info: 
Error code: generalexceptionmessage
Stack trace: 
line 461 of /lib/adodb/drivers/adodb-mysql.inc.php: Error thrown
line 492 of /lib/adodb/drivers/adodb-mysql.inc.php: call to ADODB_mysql->_connect()
line 667 of /lib/adodb/adodb.inc.php: call to ADODB_mysql->_nconnect()
line 867 of /enrol/database/lib.php: call to ADOConnection->Connect()
line 144 of /enrol/database/lib.php: call to enrol_database_plugin->db_init()
line 245 of /lib/enrollib.php: call to enrol_database_plugin->sync_user_enrolments()
line 486 of /lib/classes/session/manager.php: call to enrol_check_plugins()
line 4528 of /lib/moodlelib.php: call to core\session\manager::login_user()
line 199 of /login/index.php: call to complete_user_login()


编辑(解决方案):

我无法发布解决方案,因为尽管我提出了这个要求,但该问题一直被锁定,即使显然不是重复的,但我想有些人感到骄傲...无论如何,因为这可能将来帮助别人,这是解决方案:

问题本身在于,尽管出于某些原因,尽管已将Site admin(身份验证插件->外部数据库)中的 auth_db 设置更改为 mysqli ,在数据库中更新。

解决方案是手动更改数据库中的记录

Table: mdl_config_plugins

Row: auth_db -> type set to mysqli

0 个答案:

没有答案