偶尔我在PHP中遇到这个错误,我该如何解决这个或导致它的原因?
警告:未知:您的脚本可能依赖于PHP 4.2.3之前存在的会话副作用。请注意,除非启用register_globals,否则会话扩展不会将全局变量视为数据源。您可以通过将session.bug_compat_42或session.bug_compat_warn分别设置为off来禁用此功能和此警告。在第0行的未知中
答案 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_42
和session.bug_compat_warn
,如错误消息所示。
答案 3 :(得分:0)
我不建议您禁用警告或错误消息,这是您可能想要修复的问题。您有变量名称触发虚假错误消息(请参阅sterrointerative.com的答案)或您尝试使用全局变量而不定义它们(这意味着您可能有您无法看到的错误)。在我看来,这是一个你想要理清的重要区别。
如果仅在某些页面上发生这种情况,您可能需要查看拉入这些页面的所有代码,并搜索使用在使用之前似乎未定义的变量。使用调试器逐步浏览这些页面应该有所帮助。
答案 4 :(得分:-5)
error_reporting(0)禁用所有错误消息。