【问题标题】:session.serialize_handler as igbinary causing "igbinary_unserialize_header: unsupported version"session.serialize_handler 作为 igbinary 导致“igbinary_unserialize_header:不支持的版本”
【发布时间】:2012-12-29 08:45:50
【问题描述】:

我已经从 PECL 安装了 igbinary 1.1.1,将其配置为 php.ini 中 session.serialize_handler 的序列化程序,以便它显示在 phpinfo() 中。更改已经过测试 - 到目前为止一切都很好,但是在实时服务器上,我可以看到这样的警告(本机 php 序列化程序没有任何问题):

PHP Warning: igbinary_unserialize_header: unsupported version: 1346458177, should be 1 or 2 in dispatcher.php on line 73
PHP Warning: session_start(): Trying to destroy uninitialized session in dispatcher.php on line 73
PHP Warning: session_start(): Failed to decode session object. Session has been destroyed in dispatcher.php on line 73

这些消息并非一直出现 - 第 73 行的 session_start() 在测试期间为我工作,我还可以在访问日志中看到 ~ %80 的成功请求。

第 73 行:

session_start();

解决办法是什么?

PS 我有 Nginx 1.2.3,php5-fpm 5.3.10-1ubuntu3.4

【问题讨论】:

  • 您希望我们调试您的代码,但您甚至没有向我们展示?!无论如何,这是服务器故障,也许您打算在 Stack Overflow 上发帖?
  • 放松。我不需要我们调试我的代码。只有 session_start() 问题是由 igbinary 引起的。我的代码经过了很好的测试,可以使用 php 序列化程序。

标签: linux nginx php


【解决方案1】:

根据我粗略的谷歌检查,我提出以下建议。

我为 igbinary_unserialize_header: unsupported version 找到的一半结果表明升级到存储库中的最新版本有效,这让我相信这是一个未识别的错误。

另一半识别出未序列化的数据,这些数据要么最初不是由 igbinary 序列化,要么已损坏。最初没有被 igbinary 序列化在这里听起来是合理的,因为您在测试中没有遇到这个问题,但是您正在生产中。 您是否有可能尝试反序列化您的用户在切换到 igbinary 之前启动的会话?

我对下一个调试步骤的建议是在某处添加一些错误处理,以便将导致此错误的序列化字符串写入某处的文件中。然后,您可以自己测试反序列化它们以找出问题所在。

【讨论】:

  • 我明白了!我将在本地或登台上对其进行测试...我需要使用旧配置开始会话,然后切换到 igbinary...好主意。我会在周末之后做。之后我会更新帖子。除夕快乐!
猜你喜欢
  • 2023-03-25
  • 1970-01-01
  • 2013-10-27
  • 1970-01-01
  • 2021-04-12
  • 2018-02-15
  • 2013-11-10
  • 2012-08-22
  • 1970-01-01
相关资源
最近更新 更多