Edit report at https://bugs.php.net/bug.php?id=64206&edit=1
ID: 64206
User updated by: cameron dot junge at sella dot co dot nz
Reported by: cameron dot junge at sella dot co dot nz
Summary: Serialized object becomes r:2, which breaks
unserialization
Status: Verified
Type: Bug
Package: Scripting Engine problem
Operating System: Ubuntu 12.10
PHP Version: 5.4.11
Assigned To: mike
Block user comment: N
Private report: N
New Comment:
If unserialize is blocked inside serialize, then either the inherited class(es)
need to know all the required properties from the parent class(es), which might
cause a bit of a maintenance headache (one field changed in a base class means
all inherited classes need to be updated).
A "solution" would be to use get_object_vars() in the base class and filter the
properties returned, but that seems to me like a bit of a kludge. Would mean
only serializing once, without the unserialize.
The use-case I've got is to prevent serializing a PDO connection inside classes
that need to be persisted to memcache.
Previous Comments:
------------------------------------------------------------------------
[2013-02-20 15:03:59] [email protected]
oh, then I understand wrongly about your "deny" word, hehe
------------------------------------------------------------------------
[2013-02-20 14:56:08] [email protected]
What dynamic check?
I guess a differentiated BG(serialize_lock)/BG(unserialize_lock) should do it.
------------------------------------------------------------------------
[2013-02-20 14:47:32] [email protected]
I think deny unserialize in serialize is not a choice. it need a dynamic check
and
make no sense.
reseting one need to be test with...
------------------------------------------------------------------------
[2013-02-20 10:42:39] [email protected]
As the var_hash is kept between recursive serialize() calls, the serializer
thinks the object is already serialized, but in fact, your hacky code replaces
the previously serialized object.
I see two options:
- deny unserialize() in serialize()
- reset the serialize var_hash on unserialize() (which may break other things)
------------------------------------------------------------------------
[2013-02-20 09:07:19] [email protected]
After a quick look, I think the problem is rather the unserialize() call in the
serialize() callback and vice-versa.
------------------------------------------------------------------------
The remainder of the comments for this report are too long. To view
the rest of the comments, please view the bug report online at
https://bugs.php.net/bug.php?id=64206
--
Edit this bug report at https://bugs.php.net/bug.php?id=64206&edit=1