php - サーバー間で一貫性のないセッションのシリアル化

php session

開発環境と本番環境で一貫性のないセッションシリアライゼーションを取得しています。

コードは同一で、SVNと同期されます。 ApacheとPHPの構成は基本的に同じですが、ドメイン名のみが異なります。どちらもDebian Squeezeを実行しており、サーバーは64ビット、開発は32ビットです。

サーバーでは、保存されているデータはbase64でエンコードされているように見えますが、次のとおりです。

vvZKW5WEbvvRCs0-M0R8zTDAuTsKZSADKORDemOWOXqPJs0J42l7nZIewsHp8JjGFQw64Xq2x5dB_7187W4HPdJ1Yo5yK6oHvB8ofx7GL82WJCaPrzP8pR1xm02f9HenDaShvy1WTHuMuCSJ3zWGUnjRpOuJtZ49v4Dh2L5U0M4.


開発セッションデータは通常のPHPスタイルです。

foo|s:3:"bar";baz|s:6:"wombat";promoter|O:8:"stdClass":0:{}475b17e28b25580bb92430bb286637ddlanguage|s:5:"en_us";


サーバーでは、セッション管理が適切に機能しません。たとえば、サイトのサブドメインにアクセスすると、すべてのサブドメインのセッションが再初期化されます。

Yiiフレームワークを使用していますが、フレームワークで処理が行われる前に、index.phpファイルにcode found hereをコピーして貼り付けることで、問題の原因を取り除きました。

だから私の質問は:なぜこれが起こっているのですか、そしてどのようにしてサーバーに開発環境のようにセッションデータを保存させることができますか?

ところで、私はむしろ次のような厄介なハックに頼る必要はありません:

function writeSession($id,$data)
{
     $data = serialize($_SESSION);
     ....
}


TIA。
答え
2つのサーバーの違いは、1つはsuhosinパッチがインストールされ、セッションデータを暗号化するように設定されていたが、もう1つはそうではなかったということです。

ないサーバーにsuhosinパッチをインストールしましたが、問題が発生したため、両方のサーバーでセッション暗号化機能を無効にしました。すべてが期待どおりに動作しています。

設定ファイルで、私の場合/etc/php5/conf.d/suhosin.ini

suhosin.session.encrypt = Off
関連記事

php - PHPのVB ifステートメント

php - PHP配列の組み合わせ-1対多

php - jquery添付ファイル付きの電子メールを送信

php - アプリケーションを含む最後のブラウザタブが閉じていることを検出するにはどうすればよいですか?

php - カウンターのbatch_mutate

php - PHP-Facebook、Google、Twitterを使用したログインを許可する簡単な方法

php - カレンダーテーブルを使用して、日付範囲クエリの不足しているギャップを埋める

php - 文字列変更関数の大量の参照渡し?

php - Repcached(フェイルオーバーが機能していないようです)

php - PHPからのMSSQLストアドプロシージャの実行