Sehr bizarrer Fehler unter PHP 5.2.6 und nicht unter PHP 5.2.5

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Sehr bizarrer Fehler unter PHP 5.2.6 und nicht unter PHP 5.2.5

    Hallo allerseits,

    folgenden Code nutze ich um den Session-Container abzukapseln und von dort modul- und keybasiert Daten auszulesen.

    Quellcode

    1. /** * Returns a specific part of the storage * * @param string $module  * @param string $key  * @return void * @author Philipp Gérard */ public function read($module, $key){ if(isset($_SESSION[$module][$key])){ return $_SESSION[$module][$key]; } else { return false; } }



    Aufgerufen wird diese Methode z.B. im Auth-Modul:

    Quellcode

    1. /** * Returns true if the user is logged in * * @return void * @author Philipp Gérard */ public function isActive(){ $userdata = $GLOBALS["Zelos_Session"]->read("Zelos_Auth","userdata"); return ($userdata["status"] == true) ? true : false; }



    Auf meinem lokalen Server mit PHP 5.2.5 funkioniert das auch prächtig.

    $_SESSION ergibt lokal z.B.:

    Quellcode

    1. Array(    [Zelos_Auth] => Array        (            [userdata] => Array                (                    [id] => 1                    [username] => philippgerard                    [usergroup] => 1                    [status] => 1                )
    2.         )
    3. )



    Auf meinem (bei all-inkl liegenden) Server mit PHP 5.2.6 allerdings:

    Quellcode

    1. Array(    [Zelos_Auth] => Zelos_Auth Object        (            [adapter:private] => Array                (                    [table] => users                )
    2.             [credentials:private] => Array                (                    [identifier] => id                    [username] => username                    [password] => password                    [encryption] => sha1                    [optionals] => Array                        (                            [0] => usergroup                        )
    3.                 )
    4.         )
    5. )



    Ich kann mir überhaupt nicht erklären, wie aus einem string "Zelos_Auth" (= $module) hier das Zelos_Auth-Objekt (das es auch gibt => $GLOBALS["Zelos_Auth"]) werden kann. Hat sich irgendwas von 5.2.5 auf 5.2.6 geändert, was hierfür relevant ist?
  • Tut mir übrigens leid, dass der Code hier immer so kaputt dargestellt wird. Der WYSIWYG-Editor vom WBB scheint Safari nicht zu mögen. Reinschreiben tu ich alles schön formatiert...raus kommt halt das :)

    Ahja, der logisch aus o.g. Situation entstehende Fehler ist

    Fatal error: Cannot use object of type Zelos_Auth as array in /library/Zelos_Session.php on line 59
  • Also nachdem ich meinen Code jetzt auseinandergenommen habe, scheint folgendes das Fehlverhalten herbeizuführen:

    • Es gibt eines Klasse Zelos_Auth, die auch geladen und somit verfügbar ist.
    • Ich versuche in $_SESSION["Zelos_Auth"]["userdata"] = array(...); zu schreiben
    • Scheinbar führt dies dazu, dass $_SESSION["Zelos_Auth"] zu einer incomplete Class wird:

    Quellcode

    1. array(1) {
    2.  ["Zelos_Auth"]=>
    3.  &object(__PHP_Incomplete_Class)#3 (3) {



    Ich betrachte das als PHP-Bug und habe mal ein Ticket dafür eröffnet.

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von philippgerard ()