CI3 PHP7 session 不能读取的问题
bug场景:
linux, CI 3.0.5, php7.1.3, 验证码读取
session使用files, 调试代码发现能写入, 但其他地方不能读取, 试了其他database, redis都不行, 最后改回files
解决办法:
根本原因在这,libraries/Session/Session.php 中 128行
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']]); }
/^[0-9a-f]{40}$/,要改成 /^[0-9a-z]{10,40}$/,session_id范围好像php7发生变化了,不像每次执行都会unset($_COOKIE[ci_session]);这个值, session永远取不到值。