我使用的是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