PHP でシリアライズしたデータが壊れてしまう場合は base64_encode をする
Notice: unserialize() [function.unserialize]: Error at offset 0 of 2 bytes in /var/usr/to/path
こんなんがでちゃうとき
1、文字コードが違う。
エンコードするときとデコードするときで
文字コード違うとなるらしい
function _unserialize($string) { $ret = preg_replace('!s:(\d+):"(.*?)";!e', "'s:'.strlen('$2').':\"$2\";'", $string); return unserialize($ret); }
で対応
2、それでもなるとき
HTTP経路上でバイト数が変わったりゴミデータを拾ったりすることがあるらしい。
そんなときは
// シリアライズしつつ base64 エンコードをする関数 function serialize_base64_encode($array) { $data = serialize($array); $data = base64_encode($data); return $data; } // base64 デコードしつつシリアライズされたデータを復元する関数 function unserialize_base64_decode($data) { $data = base64_decode($data); $array = unserialize($data); return $array; }
ってやってあげると大丈夫かも