[PHP-users 14990]PHP-4.3系でのセッション処理
suzuki
cif81010 @ syd.odn.ne.jp
2003年 5月 2日 (金) 14:35:08 JST
いつもお世話になっております。
先日apxs組み込みのPHP-4.2.2をPHP-4.3.1にアップグレードしたら、
セッションを使っているスクリプトが正常に動作しなくなりました。
特に、セッションへ値を保存すると値が犯される、という現象に多く
お目にかかっています。
環境はRedHat系Linux、Apache-1.3.27、PHP-4.3.1です。
たとえば、以下はテストスクリプトですが、
<?
session_start();
$aaa = $bbb;
session_register("aaa");
$tmp1 = "val1";
echo "$tmp1 - $tmp2 / ";
$tmp2 = "val2";
echo "$tmp1 - $tmp2";
exit;
?>
これを実行すると、以下のような現象が発生します。
なお、session.use-trans-sid=On、register_globals=Onの設定です。
1)最初に上記スクリプトにアクセスすると、「val1 - val1 / val2 - val2」と
表示される。
2)ブラウザをリロードすると、正常に「val1 - / val1 - val2」に変化する。
それ以降何度リロードしても正常。
3)ブラウザを閉じてもう一度開き、再びアクセスすると、また(1)の現象が
発生。
4)上記スクリプトで、「$aaa = $bbb」をはずすと正常。また$aaaに
0、""、NULL、FALSEなどを設定しても正常に表示される。
5)session_registerを$_SESSIONにすると正常。
6)「register_globals=off」の設定で行った場合、結果は正常だが、加えて
以下のようなメッセージが出力。
Warning: Unknown(): Your script possibly relies on a session side-effect
which existed until PHP 4.2.3. Please be advised that the session extension
does not consider global variables as a source of data, unless
register_globals is enabled. You can disable this functionality and this
warning by setting session.bug_compat_42 or session.bug_compat_warn to off,
respectively. in Unknown on line 0
この現象は、register_globals関数のバグなのでしょうか?
PHP-4.3から、セッション関連の処理はいくぶん変わっていると聞きますが、
これまで作成した大量のスクリプトをできるだけ変更せずに、サーバの
設定で正常な処理を行えるような方法がありましたら、是非ともご教授
いただきたいと思います。
なお、PHPのバージョンアップで、推奨されない古い関数(上の例では
session_register関数)などが出てきた場合、その都度スクリプトを
変更したほうがいいのでしょうか?
長文になってしまい申し訳ありません。
よろしくお願いいたします。
鈴木
cif81010 @ syd.odn.ne.jp
PHP-users メーリングリストの案内