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

私が行った大雑把な Google の調査に基づいて、次のことを提案します。

私が見つけた結果の半分はigbinary_unserialize_header: unsupported version、リポジトリ内の最新バージョンへのアップグレードが機能したことを示しており、これは未確認のバグであると私は信じています.

残りの半分は、元は igbinary によってシリアル化されていないか破損している、シリアル化されていないデータを特定しました。テストではこの問題に遭遇しなかったため、最初に igbinary によってシリアル化されていないのはもっともらしいように聞こえますが、本番環境にあります。igbinary に切り替える前にユーザーが開始したセッションのシリアル化を解除しようとしている可能性はありますか?

次のデバッグ手順に対する私の提案は、エラー処理をどこかに追加して、このエラーの原因となったシリアライズされた文字列をどこかのファイルに書き込むことです。次に、自分でシリアル化解除をテストして、問題が何であるかを把握できます。

于 2012-12-28T17:07:51.563 に答える