猿问

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

我不明白,我在Symfony 3下工作,当我要转到用户管理页面时遇到一个错误:

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

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

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


哆啦的时光机
浏览 179回答 1
1回答

缥缈止盈

发生这种情况是因为角色存储为序列化数组,例如: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,这会导致错误。这使我们得出结论,编辑原始数据不是一个好主意。
随时随地看视频慕课网APP
我要回答