Bug #8676 Updated: Bad serialization of objects with references

From: Date: Wed, 23 May 2001 08:35:15 +0000
Subject: Bug #8676 Updated: Bad serialization of objects with references
Groups: php.dev 
Request: Send a blank email to php-dev+get-56450@lists.php.net to get a copy of this message
ID: 8676 User Update by: arnaud.bienvenu@generasound.com Old-Status: Feedback Status: Open Bug Type: *Session related Operating system: Linux PHP Version: 4.0.5 Description: Bad serialization of objects with references Yes, the bug is still in 4.0.5. I put it back online on http://www.generasound.com/test/bug.php You can see it in action provided your browser accepts cookies (go there and click reload). Previous Comments: --------------------------------------------------------------------------- [2001-05-22 21:29:45] sbergmann@php.net Could you please give some feedback if this problem persists with a recent version (CVS, snapshot, 4.0.5 release) of PHP? Thanks! --------------------------------------------------------------------------- [2001-01-12 11:15:12] arnaud.bienvenu@generasound.com Some complex objects won't be correctly stored into the session. This is probably a problem with serialize/unserialize. It happens with objects structure containing some references. The code below builds the simpliest structure I could find that pinpouts the problem. With more complex structure, you can have all sorts of strange behaviour, including crashing PHP, but the behaviours vary from one PHP installation to another (even with the same version and compile flags). <?php /* View this script with a browser and press reload It will probably display "-->137645276" instead of "-->Object" You can view it at http://www.generasound.com/test/bug.php */ session_start(); if (!isset($form)) { $form = new stdClass(); $submit = new stdClass(); $upperif = new stdClass(); $upperif->Child = &$submit; $upperif->Layout = new stdClass(); $upperif->Layout->Child = new stdClass(); $upperif->Layout->Child->Interface = &$submit; $lowerif = new stdClass(); $form->Children[0] = &$upperif; $form->Children[1] = &$lowerif; $form->Layout = new stdClass(); $form->Layout->Children[1] = new stdClass(); $form->Layout->Children[1]->Interface = &$lowerif; echo "-->".$form->Layout->Children[1]->Interface."<BR>"; session_register("form"); } else { echo "-->".$form->Layout->Children[1]->Interface."<BR>"; } ?> --------------------------------------------------------------------------- Full Bug description available at: http://bugs.php.net/?id=8676

« previous php.dev (#56450) next »