danOne: Wer kennt diesen Fehler?

guten Abend,

mir ist grade etwas komisches passiert, ich hab grade ein bestimmtes skript zum 100sten mal heute aufgerufen und plötzlich steht ganz am ende der seite:

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

ich nehme jetzt mal an es will mir sagen das ich irgendwo eine globale Variable angesprochen habe oder? ich kenne den fehler nicht, er tritt auch nur hie und da auf, da es aber ein warning ist, würde der auch auf dem webserver wo die seite demnächst hin soll gezeigt werden...unschön. Kennt den jemand und weiß was es mir sagen will und warum er nur sporadisch auftritt.

danke und schönen Abend noch

.dan.One.

  1. Hallo,

    Kennt den jemand und weiß was es mir sagen will

    Nur, wenn die Einstellung register_globals aktiviert ist, kannst Du mit session_register und globalen Variablen arbeiten, wenn die Einstellung register_globals deaktiviert ist, dann musst Du mit dem superglobalen Array $_SESSION arbeiten. (was auch funktioniert, wenn register_globals an ist [1]) Bei früheren PHP-Versionen gab es einen Bug, bei dem das registrieren von globalen Variablen als Session-Variablen auch bei register_globals = off aktiviert war. Vor der aus versehenen Ausnutzung dieses Bugs soll diese Meldung warnen.

    und warum er nur sporadisch auftritt.

    Ich nehme an, PHP verwendet irgendwelche Heuristiken, um zu prüfen, ob Dein Script bei register_globals = off in dieser Hinsicht versagen würde und diese funktionieren nicht ganz exakt.

    Abstellen kannst Du die Meldung übrigens - wie sie erklärt - über eine Einstellung in der php.ini, namentlich session.bug_compat_42. Diese kannst Du (vermutlich) auch über ini_set ('session.bug_compat_42', 0); am Anfang Deiner Scripte ausschalten, falls Du keinen Zugriff auf Deine php.ini hast.

    Viele Grüße,
    Christian

    [1] Nur beim entfernen von Session-Variablen muss man es bei register_globals und $_SESSION doppelt machen. (auf beide Arten)

    1. hi,

      und warum er nur sporadisch auftritt.
      Ich nehme an, PHP verwendet irgendwelche Heuristiken, um zu prüfen, ob Dein Script bei register_globals = off in dieser Hinsicht versagen würde und diese funktionieren nicht ganz exakt.

      ich würde eher einen scriptzweig vermuten, der sich in einer if-abfrage o.ä. befindet, und deshalb nicht immer durchlaufen wird.

      gruss,
      wahsaga