Codeigniter session não está funcionando no PHP 7

O identificador de sessão é diferente no PHP 7.1 e não passa na verificação de expressão regular.

Uma correção simples: No arquivo system/libraries/Session/Session.php, por volta da linha 133,

OU ! preg_match('/^[0-9a-f]{40}$/', $_COOKIE[$this->_config['cookie_name']])
remova '{40}$'

OU ! preg_match('/^[0-9a-f]/', $_COOKIE[$this->_config['cookie_name']])
O problema é que o identificador de sessão é removido do cookie devido à incompatibilidade com a expressão regular. Assim, o identificador de sessão é sempre renovado.

Isso pode corrigir a expressão regular e evitar que ela execute a linha "unset($_COOKIE[$this->_config['cookie_name']]);"

Funcionou totalmente para mim!

FYI. Encontrei isso depois de corrigir por conta própria. https://github.com/bcit-ci/CodeIgniter/issues/4830

Você achou esse artigo útil?