如何避免PHP会话错误?

时间:2009-08-07 19:01:58

标签: php session

偶尔我在PHP中遇到这个错误,我该如何解决这个或导致它的原因?

  

警告:未知:您的脚本可能依赖于PHP 4.2.3之前存在的会话副作用。请注意,除非启用register_globals,否则会话扩展不会将全局变量视为数据源。您可以通过将session.bug_compat_42或session.bug_compat_warn分别设置为off来禁用此功能和此警告。在第0行的未知中

5 个答案:

答案 0 :(得分:6)

如果您的变量名与会话参数相同,那么此版本的PHP将错误地识别这一点,因为程序员错误地依赖于register_globals来获取会话变量。重命名变量,警告就会消失。

$mySessionVar = $_session["sessionVar"]; 

而不是

$sessionVar = $_session["sessionVar"]; 

答案 1 :(得分:2)

您依赖于PHP的弃用功能,称为register_globals。此功能导致许多安全问题,不应再使用。 PHP手册讨论了这个in-depth

有关问题的精彩说明,请参阅此Google Groups帖子。

修改:如果您依赖于register_globals,那么您应该注意Gumbo和stereointeractive的答案。

答案 2 :(得分:1)

只需停用session.bug_compat_42session.bug_compat_warn,如错误消息所示。

答案 3 :(得分:0)

我不建议您禁用警告或错误消息,这是您可能想要修复的问题。您有变量名称触发虚假错误消息(请参阅sterrointerative.com的答案)或您尝试使用全局变量而不定义它们(这意味着您可能有您无法看到的错误)。在我看来,这是一个你想要理清的重要区别。

如果仅在某些页面上发生这种情况,您可能需要查看拉入这些页面的所有代码,并搜索使用在使用之前似乎未定义的变量。使用调试器逐步浏览这些页面应该有所帮助。

答案 4 :(得分:-5)

error_reporting(0)禁用所有错误消息。