【问题标题】:session_start(): Failed to decode session objectsession_start():解码会话对象失败
【发布时间】:2019-07-30 22:10:41
【问题描述】:

我有时会在使用 CodeIgniter 时遇到以下问题:

错误 - 2019-03-05 19:57:26 --> 严重性:警告 --> session_start(): 无法解码会话对象。会话已被销毁 /system/libraries/Session/Session.php 143

此错误出现在我的服务器日志中,无法人为复制。

我已经阅读了以下 SO 问题:

我也在 CodeIgniter 论坛上问过,但没有任何答案。

https://forum.codeigniter.com/thread-72960.html

这是我的会话配置(application/config/config.php

$config['sess_driver'] = 'files';
$config['sess_cookie_name'] = 'ci_session';
$config['sess_expiration'] = 7200;
$config['sess_save_path'] = NULL;
$config['sess_match_ip'] = FALSE;
$config['sess_time_to_update'] = 300;
$config['sess_regenerate_destroy'] = FALSE;

任何想法可能是该问题的根源和/或从哪里开始?

【问题讨论】:

  • 会话是存储在数据库中还是标准方式?您应该可以在 Codigniter 配置文件中进行设置。
  • 是的,我已经阅读了这个问题,但答案对我没有多大帮助。对于数据库存储,我猜会话存储在一个文件中( $config['sess_driver'] = 'files'; )

标签: php session codeigniter-3


【解决方案1】:

我在使用数据库选项存储会话信息时遇到了这个错误。使用此选项时,CodeIgniter 将会话数据存储在名为 ci_sessions 的表中,特别是在“数据”列中。默认情况下,CodeIgniter 将此列创建为 blob 数据类型,其最大数据大小为 65,535 字节。我的应用程序超出了该大小并引发了错误。为了解决这个问题,我将数据类型更改为 mediumblob,最大大小为 16,777,215 字节。之后,我的应用程序不再产生错误并按预期工作。

【讨论】:

  • 我想知道会话为什么会破坏我的用户。这个修好了。谢谢!
【解决方案2】:

问题在于这个设置

$config['sess_save_path'] = NULL;

当使用“files”驱动时,你是由以下决定的

$config['sess_driver'] = 'files';

$config['sess_save_path'] 必须设置为将存储会话文件的绝对路径。例如

$config['sess_save_path'] = '/var/www/project/sessions/';

当设置为 NULL 时,会发生各种奇怪和不可预知的事情。该文件夹还必须具有适当的所有权和权限。

【讨论】:

    【解决方案3】:

    在 application/config/config.php 中,设置这个值:

    $config['sess_save_path'] = sys_get_temp_dir();
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-10-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-12-30
      • 2010-10-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多