php7.3升级后CI框架session失效session不能读取的问题
框架ci3.0.2,php服务器从5升级到7.x后
发现session失效了
ci无法设置session的问题
根本原因在,libraries/Session/Session.php 中 133行:
class="PHP">
// Sanitize the cookie, because apparently PHP doesn't do that for userspace handlers
if (isset($_COOKIE[$this->_config['cookie_name']])
&& (
! is_string($_COOKIE[$this->_config['cookie_name']])
OR ! preg_match('/^[0-9a-z]{10,40}$/', $_COOKIE[$this->_config['cookie_name']])
)
)
{
unset($_COOKIE[$this->_config['cookie_name']]);
}
session_start();
如果sessionid的长度不是40的话,每次执行都会 unset($_COOKIE[ci_session])。而session_id取值范围和长度在php7中变了(默认是26)
session.sid_length = 26
解决办法:
将上面的/^[0-9a-f]{40}$/, 改成 /^[0-9a-z]{10,40}$/
php7.0升级到php7.1
PHP7 ci框架session存文件,登录的时候session不能读取
config.php配置
$config['sess_driver'] = 'files';//以文件存储session
$config['sess_cookie_name'] = 'ci_sessi'