全局变量在PHP中覆盖会话变量


Global variable overrides session variable in PHP

我在PHP中发现了奇怪的行为,它看起来像"反向注册全局变量"。先试试这个:

session_start();
$_SESSION['test'] = NULL;
echo $_SESSION['test'];

不输出任何内容。然后修改第2行:

session_start();
$test = 1;
echo $_SESSION['test'];

输出"1"!

如果我设置$_SESSION['test']为NULL,这只会发生!

如果100%关闭,则注册全局变量

我的主机提供商有PHP 5.2.17。这在我的本地5.3.6上没有发生。

这是一个bug还是有相应的设置?

问题解决了!

我把php.ini从

session.bug_compat_42 = On
session.bug_compat_warn = Off

:

session.bug_compat_42 = Off
session.bug_compat_warn = Off
谢谢Kerrek SB!

这种情况不会发生在我身上

http://sandbox.phpcode.eu/g/b61fd.php

试着联系你们的技术支持,但我认为这是不可能的

您确定使用的是PHP v5.2.17吗?

检查

<?php phpinfo(); ?>

在4.3.0及以后的版本中不应该出现这种情况…