我有时会遇到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;
任何想法都可能是该问题的根源和/或从哪里开始?
答案 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();