Почему UnexpectedValueException
заброшен в session_start()
?UnexpectedValueException в session_start() php failing SPLObjectStorage serialization
У меня есть объект, который имеет свойство SPLObjectstorage
. Этот объект присваивается сеансу, подобному
Я подозреваю, что внутренняя сессия сериализации сталкивается с проблемой для ее декодирования. Я храню сессию в базе данных, и похоже, что она сериализует objectStorage
, но не может ее декодировать.
Sample данные сеанса
self|O:4:"User":8:{s:5:"�*�id";N;s:7:"�*�nick";N;s:13:"�*�reputation";i:1;s:11:"�*�password";N;s:8:"�*�email";N;s:7:"�*�crud";O:10:"CRUDobject":2:{s:13:"�*�fieldCache";a:0:{}s:13:"�*�dependency";r:1;}s:7:"�*�auth";N;s:11:"�*�roleList";C:11:"RoleStorage":23:{x:i:1;N;,r:13;;m:a:0:{}}}
Rolestorage
является простирается от SPLObjectstorage
session_decode()
на строке выше также возвращает false
какие-либо идеи?
Извлечение атрибута roleList
делает его сериализацией правильно.
Если я отдельно сделать
$sr = serialize($roles); // $roles is RoleStorage object
var_dump($sr);
var_dump(unserialize($sr));
Он печатает string 'C:11:"RoleStorage":22:{x:i:1;N;,r:3;;m:a:0:{}}' (length=46)
, а затем терпит неудачу с таким же сообщением во время десериализации. Я не знаю, почему это происходит.
Примечание: при прикреплении объекта к RoleStorage
Я использовал сам объект как данные. Значит, он хранится как ссылка. Я не знаю, как (если) делает serialize()
обрабатывает внутренне это.
Пожалуйста, также добавьте [hexdump ваших данных сеанса] (http://stackoverflow.com/questions/1057572/how-can-i-get-a-hex-dump-of-a-string-in -PHP). Также в «UnexpectedValueException» есть сообщение. Ваш вопрос пока не содержит этого сообщения, пожалуйста, добавьте его. Он часто содержит важную информацию о проблеме при несериализации. – hakre