【问题标题】:Moodle session_start returns FALSEMoodle session_start 返回 FALSE
【发布时间】:2020-05-05 01:31:01
【问题描述】:

我在安装 Moodle v3.7.2 时需要一些帮助。 我在安装过程中通过了所有服务器配置检查,除了站点被识别为 http 而不是 https,可能是因为代理位于服务 Moodle 的 nginx 前面。无论如何,当我尝试加载第一页时,我收到一个一般错误:

$string['servererror'] = 'An error occurred whilst communicating with the server';

我已经调查了这个错误的源代码,并找到了动机:

在路径 /moodle/lib/classes/session/manager.php,第 90 行,此检查失败:

if (!self::$handler->start())

start() 方法只是调用一个 php 函数:

session_start();

返回 FALSE 并抛出异常。关于如何解决这个问题的任何想法?非常感谢。

编辑:我也尝试在数据库中存储会话:

$CFG->session_handler_class = '\core\session\database';
$CFG->session_database_acquire_lock_timeout = 120;

但是运气不好,现在失败的函数是:

session_set_save_handler

【问题讨论】:

  • 我遇到了同样的问题,我尝试在 Ubuntu WSL apache 2 php 7.1 上安装。你弄明白了吗?
  • 我最终清除了缓存并将 $CFG->session_handler_class= '\core\session\database';在 config.php 并导航到 / 现在它正在工作

标签: php session exception moodle moodle-api


【解决方案1】:

在基于 Windows-Subsystem-for-Linux (WSL) 的 Debian 开发服务器上安装 Moodle 3.8 时,我遇到了同样的问题。添加配置以切换到数据库会话为我修复了它:

$CFG->session_handler_class = '\core\session\database';
$CFG->session_database_acquire_lock_timeout = 120;

我认为当 Moodle 数据目录位于 moodle 虚拟主机路径之外时 WSL 权限存在问题,因此 Moodle 无法正确读取/写入会话路径(但我确实看到正在创建会话文件)。在为数据库设置会话后,您必须删除浏览器 cookie/重新启动浏览器。

【讨论】:

    【解决方案2】:

    这更像是一个通用的解决方案,但您是否在您的config.php 文件中检查了您的$CFG->wwwroot?它必须类似于“https://your.site.com/”。如果您忘记了s,如果您将网络服务器/代理配置为将用户转发到:443,Moodle 将无法建立连接。
    当我为我们的 Moodle 服务器配置 SSL 时,我经常遇到这个问题。

    【讨论】:

      猜你喜欢
      • 2020-10-18
      • 1970-01-01
      • 1970-01-01
      • 2019-06-27
      • 1970-01-01
      • 1970-01-01
      • 2014-10-18
      • 2015-08-02
      • 2012-05-17
      相关资源
      最近更新 更多