使用PHP 7.0的Redis中出现Codeigner会话错误


Codeigniter session error in Redis using PHP 7.0

我使用的是CI 3.0.3版、PHP 7.0版、Redis和MariaDB。当我将会话数据存储在数据库中时,没有任何错误。但如果我切换到Redis,每次会话试图通过session_regenerate_id重新生成时,我都会收到一个错误,在我的情况下,每300秒就会出现一次。但如果我再次刷新页面,Redis就会得到更新,页面加载也不会出错。

遇到PHP错误

严重性:4096

消息:session_regenerate_id():无法创建(读取)会话id:user(路径:tcp://localhost:6379?auth=xxxx)

文件名:Session/Session.php

行号:625

这是一个与php/memcached错误相关的错误。

解决方法:

class MemcachedSession extends SessionHandler { public function read($session_id) { return (string)parent::read($session_id); } }
$sess = new MemcachedSession(); session_set_save_handler($sess, true);
session_start(); $_SESSION['value'] = session_id(); session_regenerate_id(); ?>

请参阅https://github.com/bcit-ci/CodeIgniter/commit/79b8a086187f199bb708bd56477850fbf1dd9e91针对CI 3.0.3 的修复

CI 3.0.4将随附PHP 7的开箱即用更新。

感谢https://github.com/narfbg