Bug #8676 Updated: Bad serialization of objects with references
| From: | arnaud dot bienvenu at generasound dot com | 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