session_start():无法解码会话对象

时间:2019-03-08 20:36:00

标签: php session codeigniter-3

我有时会遇到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;

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

3 个答案:

答案 0 :(得分:8)

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

答案 1 :(得分:2)

问题出在此设置上

$config['sess_save_path'] = NULL;

使用“文件”驱动程序时,由以下内容决定

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

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

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

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

答案 2 :(得分:1)

在application / config / config.php中,设置以下值:

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