Mit dem Upgrade auf Lenny wurde auch PHP statt in Version 5.2.0 jetzt auf Version 5.2.6 aktualisiert.
Wäre eigentlich kein Problem, wenn nicht – trotz minor Version-Upgrade – die PHP-Entwickler ein relativ zentrales Verhalten geändert hätten.
Bisher war es möglich, Objekte über serialize() in der Datenbank „schlafen“ zu legen, und später über unserialize() wieder „aufzuwecken“:
$this = unserialize($data);
Mit PHP 5.2.2 wurde dieser Code komplett zerstört, da auf $this nun nur noch Read-Only zugegriffen werden kann, Schreib-Zugriffe auf das Objekt selbst sind nicht mehr möglich.
Sichtbar wird diese Änderung durch Fehlermeldungen wie:
Cannot re-assign $this in …
Abhilfe? Keine, das Verhalten ist laut PHP-Bugreport erwünscht:
Actually this is expected behavior. We explicitly decided to have $this
being readonly because of interna problems with the new engine.