Variáveis de sessão PHP intercambiadas com variáveis locais?
Eu encontrei um problema muito estranho em relação às variáveis de sessão e variáveis locais no php.
Estou tentando descobrir se não estou entendendo algo sobre sessões em php ou se esse é um problema com a versão php que meu host está usando.
Aqui está um código muito simples para demonstrar a questão estranha:
session_start();
var_dump($kenny);
var_dump($_SESSION['kenny']);
$_SESSION['kenny']='def';
var_dump($kenny);
var_dump($_SESSION['kenny']);
$kenny = 'abc';
var_dump($kenny);
var_dump($_SESSION['kenny']);
A primeira vez que executo o código, obtenho os seguintes resultados (como seria de esperar):
NULL NULL NULL string(3) "def" string(3) "abc" string(3) "def"
Eu corro uma segunda vez (sem fechar o navegador, é claro), eu entendo isso agora!
string(3) "def" string(3) "def" string(3) "def" string(3) "def" string(3) "abc" string(3) "abc"
Eu corro uma terceira, quarta, quinta vez e assim por diante, eu entendo isso !!!
string(3) "abc" string(3) "abc" string(3) "def" string(3) "def" string(3) "abc" string(3) "abc"
Parece-me que a variável de sessão 'kenny' e a variável local $ kenny se tornam aliases para um e outro após a execução do script mais de uma vez. hmm ... Eu realmente não acho que é assim que variáveis de sessão e variáveis locais funcionam no php. Por favor, corrija-me se estiver faltando alguma coisa aqui.
Meu host está executando o php 5.2.2. Quando tento exatamente o mesmo código em outros hosts executando o php 5.2.1, 5.2.14 e 5.3.1, eles sempre me dão o que espero:
1 ª vez:
NULL NULL NULL string(3) "def" string(3) "abc" string(3) "def"
Depois disso:
NULL string(3) "def" NULL string(3) "def" string(3) "abc" string(3) "def"
Eu verifiquei o log de alterações no php.net e não encontrei nada com o qual eu possa me relacionar que possa resolver esse problema. Mas, como mencionei, uma compilação anterior (5.2.1) funciona bem, então isso é muito intrigante para mim.
Se alguém executar qualquer outra versão do php 5.2.x, tente e avise-me se encontrar o mesmo problema. Ou se alguém tiver alguma idéia sobre o problema, eu realmente aprecio qualquer feedback.
Graças um milhão!