【问题标题】:Symfony 3 - Notice: unserialize(): Error at offset 11 of 28 bytesSymfony 3 - 注意:反序列化():28 字节偏移量 11 处出错
【发布时间】:2019-04-24 07:42:27
【问题描述】:

我不明白,我在 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”。如果有人能向我解释原因,我认为这不会产生这种错误,因为我的文化。

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

【问题讨论】:

    标签: php symfony


    【解决方案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,这会导致错误。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-04-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-08-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多