php7.3升級后CI框架session失效session不能讀取的問題
框架ci3.0.2,php服務器從5升級到7.x后發現session失效了
ci無法設置session的問題
根本原因在,libraries/Session/Session.php 中 133行:
// 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)
解決辦法:
將上面的/^[0-9a-f]{40}$/, 改成 /^[0-9a-z]{10,40}$/