segunda-feira, 18 de abril de 2022

Solução para Erro Sessions CodeIgniter 3 e PHP 7

 Olá amigos!

Meu servidor de hospedagem cada vez mais eliminando as versões antigas do PHP, e os erros nos sistemas legados brotando com força. 

Hoje na hostgator um dos meus sistemas mais antigos parou de funcionar, quando configurei para exibir os erros, foram vários que apareceram, e a solução mais rápida, foi atualizar a versão do CodeIgniter para a última versão, dentro da 3.x.x, hoje baixei a 3.1.13 neste endereço https://codeload.github.com/bcit-ci/CodeIgniter/zip/3.1.13 e descompactei, então copiei a pasta "system" para dentro do meu projeto, na verdade eu renomeei ela para "system3.1.13" e mudei no arquivo index.php a variável para apontar para essa nova pasta system assim fica mais fácil voltar para a antiga caso não resolvesse.

Os erros continuaram, e outra mudança que fiz foi salvar a sessão no banco de dados, tive que alterar 2 variáveis, primeiro no arquivo config defini a $config['sess_use_database'] = TRUE;

Conforme imagem abaixo:

application/config/config.php

Daí deu um erro de persistência na conexão com o banco de dados, fui lá e coloquei como FALSE, a linha é a 68 no arquivo database.php conforme figura abaixo... pra você a linha deve ser outra mas a variável é essa: $db['default']['pconnect'] = FALSE;

application/config/database.php

Caso ainda não tenha criado, é necessário criar uma tabela no banco de dados para armazenar as sessões, a SQL é a seguinte:

CREATE TABLE `ci_sessions` (
  `id` varchar(128) NOT NULL,
  `ip_address` varchar(45) NOT NULL,
  `timestamp` int(10) UNSIGNED NOT NULL DEFAULT '0',
  `data` blob NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

ALTER TABLE `ci_sessions`
  ADD KEY `ci_sessions_timestamp` (`timestamp`);
COMMIT;

Depois disso o sistema voltou a funcionar normalmente, ainda com vários alertas, mas basta você configurar o ambiente como PRODUCTION no index.php para ocultar essas mensagens... agora estou cada vez mais considerando a ideia de reescrever este sistema para a versão 4 do codeigniter que é mais compatível com as versões novas do PHP antes que os problemas piorem.

Nenhum comentário:

Postar um comentário