Sehr bizarrer Fehler unter PHP 5.2.6 und nicht unter PHP 5.2.5

  • 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 ()