Codeigniter3 session 存储方式

最近项目一直用CI3开发,在用系统提供的session类库的时候遇到奇怪问题,跟大家分享下。

在本地开发妥妥的,没有任何问题,上传到服务器就报错,如下:

 A PHP Error was encountered    
 Severity: Warning    
 Message: mkdir() [function.mkdir]: Invalid argument    
 Filename: drivers/Session_files_driver.php    
 Line Number: 117

 Backtrace:    
 File: index.php
 Line: 301
 Function: require_once

 An uncaught Exception was encountered    
 Type: Exception    
 Message: Session: Configured save path '' is not a directory, doesn't exist or cannot be created.

 Filename: \system\libraries\Session\drivers\Session_files_driver.php    
 Line Number: 119

 Backtrace:    
 File: index.php
 Line: 301
 Function: require_once

大概意思是在保存session时,session不上目录,不存在,并且无法创建目录,mkdir()无效。因为linux没给权限吧。

然后我就试着找解决办法,在config.php

目录里设置如下:

$config['sess_save_path'] = BASEPATH.'../'.'data';

意思是把session存放在项目根目录下的data目录里。暂时解决。

后来,我们写了一个微信支付插件,需要读取在CI创建的session,死活读取不出。

会不会是改变了session存储目录导致的?

session_save_path()函数设置和CI3一致的目录,还是无法读取。

原来CI对session进行了处理,如下图。

ssss

CI3自动加入了__ci_last_regenerate的标记,导致无法读取。

那么解决办法最好是不用CI3内置的session类库。