2011-08-13 10 views
4

PHPで奇妙な動作が見つかりました。まずこれを試してみてください。グローバル変数がPHPのセッション変数をオーバーライドします

session_start(); 
$_SESSION['test'] = NULL; 
echo $_SESSION['test']; 

これは何も出力しません。次に、行2を変更します。

session_start(); 
$test = 1; 
echo $_SESSION['test']; 

これは "1"を出力します。

これは$ _SESSION ['test']をNULLに設定した場合にのみ発生します。

100%オフの場合はグローバルを登録してください。

私のホスティングプロバイダは、PHP 5.2.17を使用しています。これはローカル5.3.6では起こりません。

これはバグですか?これについての設定はありますか?それは私のために発生しません

+2

5.3.2で再生できません。しかし、 "あなたのスクリプトは、おそらくPHP 4.2.3まで存在していたセッションの副作用に依存しています。" ...そして、 'session.bug_compat_42'設定フラグへの参照です。あなたは完全なコードを投稿できますか? –

+0

5.2.5で再現できません。 http://codepad.org/b02TTy5E – hakre

+2

@ロバーツ:あなたの答えを下記の答えとして追加してください(はい、あなた自身の質問に答えることができます)。あなたはそれを "答え"としてマークすることができました。この答えはこの問題を解決したものとしてマークします。ご協力いただきありがとうございます! – hakre

答えて

2

問題は解決!

session.bug_compat_42 = On 
session.bug_compat_warn = Off 

へ:

私はからのphp.iniを変更し

session.bug_compat_42 = Off 
session.bug_compat_warn = Off 

おかげKerrek SB!

0

http://sandbox.phpcode.eu/g/b61fd.php

はあなたのサポートに連絡してください、私はそれが可能

+2

そこに 'var_dump'を置く方がよいでしょう。ちょうど 'echo'edコードでは実行されていないようです。 – zerkms

0

ないと思うあなたは、PHPのv5.2.17を使用していますか?

チェック

<?php phpinfo(); ?> 

これは4.3.0で何が起こっすべきではないと、後で...

関連する問題