0

我已经从 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

4

1 回答 1

1

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

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

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

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

于 2012-12-28T17:07:51.563 回答