unserialize
オブジェクトのインスタンス状態を保存しようとしていますが、 「オフセットエラー」エラーserialized
のためにオブジェクトを再開できません。
これは、最も単純なオブジェクトであっても、シリアル化を解除しようとするすべてのオブジェクトに当てはまります。
class Object
{
protected $variable = true;
}
$object = serialize(new Object());
$string = 'O:6:"Object":1:{s:11:"*variable";b:1;}';
echo $object."\n";
echo "length: ". strlen($object)."\n\n";
echo $string . "\n"; // Strangely 2 characters shorter than $object
echo "length: ". strlen($string)."\n";
unserialize($object); // Works
unserialize($string); // Does not work
このコードは以下を出力します:
O:6:"Object":1:{s:11:"*variable";b:1;}
length: 40
O:6:"Object":1:{s:11:"*variable";b:1;}
length: 38
Notice: unserialize(): Error at offset 33 of 38 bytes
私は立ち往生しています、なぜ保存された文字列を逆シリアル化できないのですか?