我刚刚在服务器上发现了一个设置我正在开发一个与我的localhost设置不同的设置,但是,我无法找到更改它的位置。
这是一个简单的例子,说明发生了什么。
$_SESSION['Animal'] = "Dog";
echo "#1: ".$_SESSION['Animal']."<br/>";
echo "#2: ".$Animal;
在我的localhost上,服务器返回:
#1:狗
#2:
在公共主机上,服务器返回:
#1:狗
#2:狗
我猜这是公共服务器php.ini文件中的一个设置,但是,我找不到它的设置。
答案 0 :(得分:8)
Registered Globals directive似乎已开启。
自PHP 5.3.0开始,此功能已被弃用,自PHP 6.0.0起已被删除。非常不鼓励依赖此功能。
Information about the register_globals ini setting
如上面的声明所示,强烈建议您在公共服务器上的php.ini文件中禁用它。
如果您无法访问公共服务器上的php.ini文件,则手册会提示另一种选择:
请注意,register_globals不能在运行时设置(ini_set())。虽然如果您的主机允许它,您可以使用.htaccess,如上所述。一个示例.htaccess条目:php_flag register_globals off。
答案 1 :(得分:2)
哦不!
您的主机已启用register_globals
,这很糟糕 - have a look at these docs