我删除了FosUserBundle并开发了自己的User模块。从那时起,当我尝试序列化会话时,我会弹出此错误。
$session->set($this->sessionKey, serialize($token));
编辑:即使我有答案,我还是把这个问题贴了出来,因为我花了3天的时间在这个问题上,它可以帮助其他人(比如我未来的我路过)
6yjfywim1#
因为我在寻找类似问题时偶然发现了这个线程:确保没有将任何Symfony\Component\Cache\Adapter\AbstractAdapter示例写入PHP会话。在请求结束时,php尝试序列化会话,以便在下一个请求中获取它。Symfony\Component\Cache\Adapter\AbstractAdapter通过设计抛出序列化异常。在我们的例子中,我们有一个Utility-class设置为Object的属性。这个utility class持有对Symfony FileCache的引用。一旦Object被添加到$_SESSION,session-close就失败了,上面显示的异常(因为对象引用了utility,utility引用了file-cache)。删除引用使反序列化/序列化再次成为可能。
Symfony\Component\Cache\Adapter\AbstractAdapter
Object
$_SESSION
8hhllhi22#
问题是User实体在会话中没有正确序列化。
class User implements UserInterface ,\Serializable { /** * {@inheritdoc} */ public function serialize() { $test = null; return serialize([ $this->password, $this->salt, $this->username, $this->enabled, $this->id, $this->email, $this->roles, $this->groups ]); } /** * {@inheritdoc} */ public function unserialize($serialized) { $data = unserialize($serialized); list( $this->password, $this->salt, $this->username, $this->enabled, $this->id, $this->email, $this->roles, $this->groups ) = $data; } }
2条答案
按热度按时间6yjfywim1#
因为我在寻找类似问题时偶然发现了这个线程:
确保没有将任何
Symfony\Component\Cache\Adapter\AbstractAdapter
示例写入PHP会话。在请求结束时,php尝试序列化会话,以便在下一个请求中获取它。
Symfony\Component\Cache\Adapter\AbstractAdapter
通过设计抛出序列化异常。在我们的例子中,我们有一个Utility-class设置为
Object
的属性。这个utility class持有对Symfony FileCache的引用。一旦Object
被添加到$_SESSION
,session-close就失败了,上面显示的异常(因为对象引用了utility,utility引用了file-cache)。删除引用使反序列化/序列化再次成为可能。8hhllhi22#
问题是User实体在会话中没有正确序列化。