【问题标题】:PHP: session | Failed to decode session objectPHP:会话 |无法解码会话对象
【发布时间】:2018-02-19 01:28:18
【问题描述】:

我尝试将电子商务功能添加到旧项目中,因此我仍然需要旧的会话处理程序。我在这个项目中使用 PHP v7.1.14 和 Session2DB (https://github.com/voku/session2db/tree/4.0.0)。现在我对这个“遗留项目”+ Symfony 3.4.4 + Sylius 1.1.0 和会话处理有一个奇怪的问题。

Symfony 会话配置:

session:
    storage_id: session.storage.php_bridge
    handler_id: ~

信息:https://symfony.com/doc/3.4/session/php_bridge.html

错误:如果我尝试登录 Sylius 的管理视图,我会看到此错误

session_start():解码会话对象失败。会话已 销毁

...知道如何调试/修复此问题吗?

编辑:如果我尝试在遗留项目中使用本机 php 会话处理 + 上述 Symfony 配置,我会收到以下错误。所以我认为解码错误是 Session2DB 中的东西。

无法从会话中反序列化安全令牌。

...也许知道如何调试/修复这个问题?

【问题讨论】:

  • 您在会话中存储什么样的数据?是偶然的unicode字符吗?
  • 是的,碰巧也有unicode,但是数据库和数据库连接等使用的是utf8mb4。
  • serialize()ing 怎么样?我的猜测是会话处理程序 (Session2DB) 不知何故无法读取会话中的数据。
  • 是的,也许...我在这里找到了一篇关于“legacy-session”+ Symfony 的旧博文 -> tech.trivago.com/2015/08/26/writing-to-legacy-session,他们还建议检查 php 中的“session_encode”。

标签: php symfony sylius


【解决方案1】:

在我的情况下,错误的原因是存储在会话变量中的random_bytes() 函数的非编码输出。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-07-30
    • 1970-01-01
    • 1970-01-01
    • 2023-03-15
    • 1970-01-01
    • 2011-01-26
    • 2011-07-17
    • 1970-01-01
    相关资源
    最近更新 更多