SAE 上面蹦出一个错误提示:
Warning: Unknown: Your script possibly relies on a session side-effect which existed until PHP 4.2.3. Please be advised that the session extension does not consider global variables as a source of data, unless register_globals is enabled. You can disable this functionality and this warning by setting session.bug_compat_42 or session.bug_compat_warn to off, respectively in Unknown on line 0
很显然,只要
就可以了,但是 SAE 上禁用了 ini_set()
这个函数。
况且我很想知道是什么引起了这个错误。
两个星期之后,我终于找到了(感谢 v2ex 上的 haiyang416),链接:http://stackoverflow.com/questions/175091/php-session-side-effect-warning-with-global-variables-as-a-source-of-data。
原因就是:在开启了 bug_compat_42 特性之后,$_SESSION 数组里的成员会被自动注册为全局变量,当覆盖这个全局变量时就会引发错误。
我的解决方案是将 $_SESSION 中的变量名都改为加一个前缀的,这样就不会和局部变量重名了,不知道还有没有更好的方式。
ps 这个错误虽然简单,但是我确实花了很长时间查找原因。不写出来,对不起那些已经花掉的时间。
再ps SAE 为什么不禁用这个特性呢?