我不明白,我在Symfony 3下工作,当我想转到用户管理页面时遇到一个错误:
注意:unserialize():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”在数据库中修改了自己。如果有人可以向我解释为什么,对于我的文化,我认为这不会造成这种错误。
但是无论如何仍然可以解决问题!
答案 0 :(得分:3)
发生这种情况是因为角色存储为序列化数组,例如:
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,这会导致错误。
这使我们得出结论,编辑原始数据不是一个好主意。