2012-12-27 54 views
0

我已經從PECL安裝了igbinary 1.1.1,在php.ini中將它配置爲session.serialize_handler的序列化程序,以便它在phpinfo()中顯示。的變化進行了測試 - 到目前爲止,一切都很好,但活的服務器上,我可以看到這樣的警告(正在不與本地的PHP串行任何問題):session.serialize_handler作爲igbinary導致「igbinary_unserialize_header:不支持的版本」

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 

出現這些消息不是所有的時間 - 在session_start ()來自第73行,在測試過程中爲我工作,我也可以在訪問日誌中看到〜80%的成功請求。

線73:

session_start(); 

會有什麼解決辦法?

PS我的Nginx 1.2.3,PHP5-FPM 5.3.10-1ubuntu3.4

+0

您希望我們調試您的代碼,但您甚至沒有向我們展示過它?無論如何,這是服務器故障,也許你打算在Stack Overflow上發佈? –

+0

放鬆。我不需要我們調試我的代碼。只有session_start(),問題是由igbinary引起的。我的代碼已經過很好的測試,並使用php序列化程序。 –

回答

1

基於走馬谷歌檢查我這樣做,我建議如下。

我發現igbinary_unserialize_header: unsupported version的一半結果表示升級到存儲庫中的最新版本,導致我相信這是一個未識別的錯誤。

另一半確定的數據是非序列化的,或者最初沒有被igbinary或腐敗序列化。由於你沒有在測試中遇到這個問題,但是你在生產中,所以原本並不是由igbinary聲音序列化。 是否有可能在切換到igbinary之前嘗試反序列化用戶啓動的會話?

我對下一個調試步驟的建議是在某處添加一些錯誤處理,以將導致此錯誤的序列化字符串寫入某處的某個文件。然後,您可以自己測試它們的序列化,找出問題所在。

+0

我懂了!我會測試它在本地或階段...我需要開始會話與舊的配置,然後我切換到igbinary ...好主意。我會在週末結束後做。之後我會更新這篇文章。除夕快樂! –