php - Symfony 3 - 通知 : unserialize(): Error at offset 11 of 28 bytes

标签 php symfony

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

Notice: unserialize(): Error at offset 11 of 28 bytes

Symfony\Component\Debug\Exception\ ContextErrorException

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

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

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

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

谢谢!

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

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

最佳答案

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

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

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

关于php - Symfony 3 - 通知 : unserialize(): Error at offset 11 of 28 bytes,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55824784/

相关文章:

php - Symfony2,FOSRestBundle - 捕获异常

php - Symfony:类型为 "?Doctrine\Common\Collections\Collection"的预期参数,在属性路径中给出 "array"

javascript - 使用AJAX使用按钮将表单信息发送到另一个页面

php - 如何使表单标签中的操作属性正常工作?

php - Symfony 与 nginx 不提供 .js 和 .css 文件

php - FOSUserBundle 覆盖注册但无法加载类型错误

PHP mySQL UPDATE 脚本不会执行

php - 在 PHP 中将等边范围映射到不对称范围(Hue 到 YIQ)

php - 处理带有数字 id 的 html 输入元素 javascript

php - 在 symfony 2 中为 Controller / Action 定义默认路由