もうすぐ納品のPHP+Mysqlによるショップさんのサイトでの出来事。
これまでに見たことのない(?)Warningが出てびっくり!
こんな警告↓
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
英語の上に長い文章で何が書いてあるか、さっぱりわからん!
そこで、インターネットで検索。
無謀にもこの文章をそのままぐぐってしまいました。
しかし、ぐーぐるちゃんは、おりこうだった。
警告: Unknown(): お使いのスクリプトは、セッションのサイドエフェクトに依存している可能性があります。このサイドエフェクトはPHP 4.2.3 まで存在しています。register_globalsを有効(enabled)にしない限り、セッションエクステンションは、グローバル変数をデータのソースとして認識しません。session.bug_compat_42 または、session.bug_compat_warn をoffにすることで、この機能とこの警告メッセージをそれぞれ無効(disable)にすることができます。
(http://q.hatena.ne.jp/mobile/1182967583 より抜粋)
その上で、色々調査した結果、私が作成したソースのここで起きている!
ということが、判明しました。
SESSION変数とPOSTまたはGET変数が同じ名前になっていると警告が出る。
$AA = $_SESSION['AA'] = $_POST['AA'];
同じ名前にしておかないと、上記のような行がたくさんあってわからなくなりそうで...。
私は、行数を増やしたくなかったので、上記のような方法を使いましたが、これでも出ます。
$AA = $_POST['AA'];
$AA = $_SESSION['AA'] ;
行がくっついてなくても出ます。
では、対策は?
1.php.iniのregister_globals=onとする。
→ セキュリティ上、絶対にやりたくないし、やらない!!
2.php.iniのsession.bug_compat_42=off、session.bug_compat_warn=offとする。
→ 私がテスト的に使用してるサーバーでは、php.iniの書き換えが難しいためパス。
(書き換えられる命令の制限があります。)
3.ソースリストのsession_start()の前に(というよりも1行目、一番最初に)
ini_set("session.bug_compat_42", 0);
ini_set("session.bug_compat_warn", 0);
を入れる。
→ 片方だけでも良さそうですが、私は念のために両方入れました。
これで、Warningは出なくなりました。
めでたし、めでたし!
これまでに見たことのない(?)Warningが出てびっくり!
こんな警告↓
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
英語の上に長い文章で何が書いてあるか、さっぱりわからん!
そこで、インターネットで検索。
無謀にもこの文章をそのままぐぐってしまいました。
しかし、ぐーぐるちゃんは、おりこうだった。
警告: Unknown(): お使いのスクリプトは、セッションのサイドエフェクトに依存している可能性があります。このサイドエフェクトはPHP 4.2.3 まで存在しています。register_globalsを有効(enabled)にしない限り、セッションエクステンションは、グローバル変数をデータのソースとして認識しません。session.bug_compat_42 または、session.bug_compat_warn をoffにすることで、この機能とこの警告メッセージをそれぞれ無効(disable)にすることができます。
(http://q.hatena.ne.jp/mobile/1182967583 より抜粋)
その上で、色々調査した結果、私が作成したソースのここで起きている!
ということが、判明しました。
SESSION変数とPOSTまたはGET変数が同じ名前になっていると警告が出る。
$AA = $_SESSION['AA'] = $_POST['AA'];
同じ名前にしておかないと、上記のような行がたくさんあってわからなくなりそうで...。
私は、行数を増やしたくなかったので、上記のような方法を使いましたが、これでも出ます。
$AA = $_POST['AA'];
$AA = $_SESSION['AA'] ;
行がくっついてなくても出ます。
では、対策は?
1.php.iniのregister_globals=onとする。
→ セキュリティ上、絶対にやりたくないし、やらない!!
2.php.iniのsession.bug_compat_42=off、session.bug_compat_warn=offとする。
→ 私がテスト的に使用してるサーバーでは、php.iniの書き換えが難しいためパス。
(書き換えられる命令の制限があります。)
3.ソースリストのsession_start()の前に(というよりも1行目、一番最初に)
ini_set("session.bug_compat_42", 0);
ini_set("session.bug_compat_warn", 0);
を入れる。
→ 片方だけでも良さそうですが、私は念のために両方入れました。
これで、Warningは出なくなりました。
めでたし、めでたし!
#
by colors-K
| 2010-03-12 20:42
| PHP