web-dev-qa-db-ja.com

phpセッションファイルに互換性がありませんか? -php5.2 debian lenny vs php5.3 debian squeeze

phpは、セッションファイルをサーバー1(debian lenny php 5.2)から新しいサーバー(debian squeeze php 5.3)に移行した後、セッションファイルをゼロに切り捨てています。

createsession.php(以下を参照)を使用してサーバー1でセッションを作成し、同じサーバー上のdumpsession.phpを使用してセッションのコンテンツを表示できます。

サーバー1から別のサーバーにセッションファイルをコピーし、ローカルホストファイルを変更してサーバー2に切り替えた後も、ブラウザーに正しいセッションIDが保存された同じCookieがあり、新しいサーバーは正しいセッションファイルにアクセスしますがサーバーは、セッションの内容を表示する代わりに、セッションファイルをゼロに切り捨て、同じセッションIDで新しいセッションを開始します。

セッションファイルを移行することは可能ですか? serveripはどういうわけかsessiondataにハッシュされていますか?

php5.2とphp5.3の間でセッションを共有することは可能ですか?

createsession.php

<?php
  session_name('mysession');
  session_start();
  var_dump(session_id());
  var_dump($_SESSION);
?>

dumpsession.php

<?php
  session_name('mysession');
  session_start();
  var_dump(session_id());
  $_SESSION['foo'] = 'bar';
?>

php.iniセッションパート

[Session]
session.save_handler = files
session.save_path = "3;/var/lib/php5"
session.use_cookies = 1
session.name = PHPSESSID
session.auto_start = 0
session.cookie_lifetime = 0
session.cookie_path = /
session.cookie_domain =
session.cookie_httponly = 
session.serialize_handler = php
session.gc_divisor     = 100
session.gc_maxlifetime = 5184000
session.bug_compat_42 = 1
session.bug_compat_warn = 1
session.referer_check =
session.entropy_length = 0
session.entropy_file =
session.cache_limiter = nocache
session.cache_expire = 180
session.use_trans_sid = 0
session.hash_function = 0
session.hash_bits_per_character = 4
url_rewriter.tags = "a=href,area=href,frame=src,input=src,form=,fieldset="

編集:私の解決策はdebianlennyに戻すことでした。

1
c33s

それが変更された場合、私は非常に驚きます(自分自身をチェックするためのアクセス権がありません)。

セッションファイルを/ tmpにコピーするとどうなりますか?

$s=('/tmp/sess_' . session_id);
print_r(unserialize(substr($s, strpos($s, '|')+1)));

Serialize()の形式を変更した場合と比較して、セッションファイルの形式が変更された可能性が少し高いと思います。したがって、独自のセッションハンドラーを使用するだけで問題が解決する場合があります。

とにかく、複数のマシンでWebサイトを実行している場合は、それぞれで同じ構成ソフトウェアを維持するようにしてください。これにより、作業が大幅に簡素化されます。

1
symcbean

php5-suhosinパッケージを削除することで、これを修正できます。

aptitude remove --purge php5-suhosin

どうやらその新しい機能の1つは、セッションデータを暗号化することです。これは、lennyからsqueezeにアップグレードしたときに有効になりました。

私はこれを解決するのにかなり長い時間を費やしました!

1
Nick Craig-Wood