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

ero*_*onn 2 php symfony

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

注意:unserialize():28 字节偏移量 11 处出错

Symfony\Component\Debug\Exception\ ContextErrorException

in vendor/doctrine/dbal/lib/Doctrine/DBAL/Types/ArrayType.php (line 58)
Run Code Online (Sandbox Code Playgroud)

然而,在效果很好之前,却很奇怪。其他几个人已经遇到了同样的问题,但原因绝非相同。

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

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

谢谢 !

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

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

u_m*_*der 5

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

a:1:{i:0;s:16:"ROLE_SUPER_ADMIN";}
Run Code Online (Sandbox Code Playgroud)

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

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

a:1:{i:0;s:16:"ROLE_ADMIN";}
Run Code Online (Sandbox Code Playgroud)

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

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