首页 > 解决方案 > Symfony 3 - 注意:反序列化():28 字节偏移量 11 处出错

问题描述

我不明白,我在 Symfony 3 下工作,当我想转到我的用户管理页面时出现错误:

注意:反序列化():28字节偏移量11处出错

Symfony\Component\Debug\Exception\ ContextErrorException

in vendor/doctrine/dbal/lib/Doctrine/DBAL/Types/ArrayType.php (line 58)

然而,在它工作得很好之前,它很奇怪。其他几个人已经有同样的问题,但它从来都不是同一个原因。

我记得在我的项目的无用文件中做了一点空虚,但我删除了未使用的文件,以及我没有使用的注释块。

如果它有助于解决我的问题,这是我的 user.php

谢谢 !

编辑:好的,我只是很愚蠢。我的用户实体继承自 FOSUserBundle。在我的数据库中,我有一个角色为 SUPER_ADMIN 的用户。Suaf 同时,在我的代码中,我删除了这个角色,只留下了 ADMIN 角色,我在数据库中修改了自己,删除了太多的“SUPER”。如果有人能向我解释原因,我认为它不会产生这种错误,因为我的文化。

但无论如何问题还是解决了!

标签: phpsymfony

解决方案


发生这种情况是因为角色存储为序列化数组,例如:

a:1:{i:0;s:16:"ROLE_SUPER_ADMIN";}

看到这个了s:16吗?这意味着在反序列化期间 php 将采用 16 个符号(恰好是ROLE_SUPER_ADMIN)。

所以,当你删除SUPER你的数据时

a:1:{i:0;s:16:"ROLE_ADMIN";}

并且s:16不正确的,因为现在您有10 个符号而不是16 个。但是 php 尝试获取 16,这会导致错误。

这使我们得出结论,编辑原始数据不是一个好主意


推荐阅读