O meu servidor PHP está dando erros de sessão de repente

2

Estou executando o Xampp, que é uma configuração LAMP basicamente, mas para windows. Eu tenho usado isso há anos sem problemas e, de repente, todas as minhas páginas de sites que usam sessões PHP agora estão dando erros como este ...

Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at C:\webserver\htdocs\friendproject2\labs.php:1) in C:\webserver\htdocs\friendproject2\labs.php on line 3

Eu percebo que isso acontece a partir de 1 de 2 coisas em geral.

  1. Se houver algum espaço em branco impresso na tela antes que a função session_start () seja chamada, às vezes isso pode acontecer
  2. Se houver alguma coisa impressa na tela / navegador antes que o session_start () seja chamado.

Agora meu problema é diferente. Antes de hoje à noite, eu tinha centenas de arquivos que usavam sessões e nenhum deles mostrava nenhum desses erros. Não é apenas um arquivo onde estou com vista para um erro do usuário, isso só começou a afetar todos os meus arquivos. Eu não fiz nenhuma alteração no meu computador hoje à noite ou recentemente que me recordo.

O que poderia estar causando isso? Isso está me deixando louco e ninguém parece saber por que isso começou a acontecer. Eu acho que deve ser relacionado ao servidor

Eu posso até mesmo criar um arquivo e colocá-lo em qualquer pasta do meu servidor web e ser um arquivo simples como este bvelow e ele ainda vai dar o erro que eu mostro acima ....

<?PHP
session_start();

$_SESSION['test'] = 'test value';

echo $_SESSION['test'];
?>
    
por JasonDavis 23.01.2010 / 04:37

1 resposta

1

Verifique se todos os seus arquivos estão salvos com a codificação UTF-8. Os arquivos codificados em UTF-8 podem incluir uma BOM (Byte Order Mark) para informar a diferença entre a ordem big-endian / little endian byte. O PHP não entende a BOM e, quando ela acerta no começo do arquivo, supõe que ele está lidando com dados e envia-os - então já é tarde demais para modificar cabeçalhos.

A solução seria ter certeza de salvar seus arquivos como ANSI - configure seu IDE / editor

Espero que ajude.

EDITAR:

Se este for o caso, você provavelmente tem muitos arquivos que você precisa converter. Você pode usar tente usar este código de shell bash que usa iconv para fazer isso para você (adaptado de: link )

for files in /mydisk/myfolder/*.php
  do
    iconv -f UTF-8 -t ISO-8859-1 "$files" "${files%.php}"
done
    
por 27.01.2010 / 18:18