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

问题描述 投票:0回答:4

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

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

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

我已经阅读了以下问题:

我也在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;

有什么想法可能是该问题的根源和/或从哪里开始吗?

php session codeigniter-3
4个回答
16
投票

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


5
投票

问题出在这个设置上

$config['sess_save_path'] = NULL;

当使用“文件”驱动程序时,您的身份由以下因素确定

$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();

0
投票

非常感谢您,您的解释非常有帮助,上帝保佑您。

© www.soinside.com 2019 - 2024. All rights reserved.