Symfony 3-注意:unserialize():在偏移量11为28字节时出错

时间:2019-04-24 07:42:27

标签: php symfony

我不明白,我在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”在数据库中修改了自己。如果有人可以向我解释为什么,对于我的文化,我认为这不会造成这种错误。

但是无论如何仍然可以解决问题!

1 个答案:

答案 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,这会导致错误。

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