パソコン活用

■ グローバル変数のエラー Warning: Unknown():

PHPバージョンの古いもので作成したプログラムを使おうとしたとき、下記のようなエラーメッセージが出るときがあります。

□エラーメッセージ□
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

これは、PHP4.2.3以降、register_globalsがデフォルトでOFFになっているため、初期化していないグローバル変数がある場合、 上記のエラーが表示されるようです。
これを避けるには、session変数へのデータの渡し方が良くなかったり、初期化していないグローバル変数がある場合は、初期起動時に初期化する必要があります。
ただ、エラー表示が出るだけで、動作的に問題はないといった場合、強制的にエラー表示を出さなくする方法もあります。
PHP 4.3.0 から利用できるようになった
・session.bug_compat_warn
を off (0) にしてもエラー表示はなくなるようです。これは、php.ini に項目が含まれています。
また、php.iniの編集が許可されていないところもあると思いますので、.htaccessファイルでも可能なようです。
php_flag session.bug_compat_warn off
を.htaccessに追加します。

ただ、基本的には、グローバル変数を初期化して、エラーを出さないようにするほうが、セキュリティ的にも良いと思います。

 
Copyright 2007 Simplesite