
Uma sessão do PHP é um pequeno ficheiro no servidor, ligado ao visitante por um cookie (o PHPSESSID). É lá que a aplicação guarda quem está autenticado, o que está no carrinho, e por aí fora. Quando um utilizador “é desligado sem razão”, uma de duas coisas aconteceu: o ficheiro desapareceu, ou o cookie deixou de chegar.
As causas, da mais comum à mais rara
| Causa | Como se reconhece | O que fazer |
| Tempo de vida curto | Desliga depois de uns minutos parado, mas não a meio de uma tarefa. | O PHP limpa os ficheiros de sessão parados há mais do que o session.gc_maxlifetime, que por omissão é curto. Suba-o, e acerte o tempo do cookie na própria aplicação. |
| Mudou a versão do PHP | Todos os utilizadores foram desligados de uma vez, uma única vez. | É normal: cada versão do PHP guarda as sessões na sua própria pasta. Não volta a acontecer. |
| www e sem www, ou http e https | Fica autenticado num endereço e desautenticado no outro. | O cookie pertence a um endereço. Escolha um só e redirecione o outro. Veja .htaccess para projectos PHP. |
| Cache a servir páginas já autenticadas | Um utilizador vê o nome de outro, ou fica “desligado” só em algumas páginas. | A cache de páginas (do plugin ou de um CDN) tem de excluir as páginas autenticadas. |
| O PHP não consegue escrever a sessão | Aviso “Failed to write session data”, ou sessões que nunca ficam. | O espaço da conta chegou ao fim, ou a pasta de sessões não tem permissão. Veja o espaço no cPanel. |
| session_start() tarde demais | O aviso “headers already sent” aparece, e o cookie nunca é enviado. | O session_start() tem de correr antes de qualquer texto sair, incluindo espaços antes do <?php. É um defeito do código. |
Dar à sua aplicação uma pasta de sessões própria
Só vale a pena se precisa de um tempo de vida diferente do resto, ou se quer as sessões fora do sítio por omissão. Não é preciso para o dia a dia.
|
|
|
session.save_path = "/home/SUACONTA/sessoes"
session.gc_maxlifetime = 7200
O segundo valor está em segundos e é um exemplo.
| Não ponha a pasta de sessões dentro de public_html. Um ficheiro de sessão é uma chave de entrada: quem o conseguir ler pode agir como o utilizador. |
| “Manter-me autenticado” é uma funcionalidade da aplicação, não do PHP. Normalmente cria um segundo cookie, de longa duração. Se a aplicação não o oferece, subir o gc_maxlifetime tão alto quanto se quiser não resolve: o cookie da sessão morre quando o navegador fecha. |
|
Os utilizadores continuam a ser desligados e já percorreu a tabela? Diga-nos o endereço e a hora a que aconteceu. Abrir um pedido de suporte |
|
VEJA TAMBÉM php.ini e .user.ini: onde pôr cada valor Onde está o registo de erros do PHP .htaccess para projectos PHP: URLs amigáveis e redireccionamentos |
PRODUTO RECOMENDADO Alojamento de sites com cPanel Domínio e SSL incluídos, cópias diárias e o painel que já conhece. desde 5.940,00 Kz/mês (plano de 3 anos, com cupão) Ver planos |
- 0 Utilizadores acharam útil











