« お久しぶりです! | メイン | めちゃめちゃいいかも »
October 28, 2005
あらら・・・(PHP4.2+にアップグレードされる方必見かも)
むかーし、むかし
年号を2桁で管理しているコンピュータが
西暦2000年を1900年と誤認してしまい、
処理を続行できなくなる問題
2000年問題(Y2K問題)とかあったけど・・・・
私は、今、なんと・・・
register_globals問題
(register_globalsはPHPの動作設定項目の一つね)
とかいう問題に突き当たってしまった・・・
ってか、これやっぱり名前がつくような問題だったんだ ・・・
---
先日の私の不安材料
専用サーバーがやっと契約プロセスが終わり、
今朝、サーバーが準備ができた
という連絡がはいり、ルンルン♪
データベースを移行し、
ファイルを移行し、
さーて、テスト・・・・
あ、あれ??おかしい・・・何かがおかしい・・・(汗)
シンプルなPHPベースのシステムなんですが・・・ね。
なんで??
原因追求すること2時間
どうやら、URL変数の取得が上手くいってない模様
ええええ、でもなぜだ??
なぜーーーーーーー????
phpinfoを見比べてみる・・・が、多すぎて違いがわからない 爆
仕方ないので、PHPマニュアル見てみた
でも、あんま助けになんなかった。
んで、ぐぐりまくってたら、
あ、あった
register_globals問題
PHPバージョン4.1.xまでと4.2以降では
このregister_globals設定の既定値が異なってるらしいいいいい
4.1.xまではデフォルトで register_globals=on
4.2以降ではoff
えええええ、勝手 変えんなよーーーー
(でもセキュリティー問題上、変えるべきですが)
『この変更の影響で、PHPバージョン4.1.xまでを対象に作られたプログラムが、かなり簡単なサンプルでさえもPHPバージョン4.2以降で動かないということが多発しており、いわゆる「register_globals問題」として知られている。』
やっぱし、、、
くやしいけど、コード書き直しかぁ・・・・
全ファイル見直し・・・・ぐすっ
週末中に移行完了するはずが・・・・
終わらないかもーーーーーーーー涙
前任者よ・・・
なんで、こんなコード書くのだよ・・・
register_globals=on の設定では、
クライアントから送信されたデータが
$A=*** $B=***
ってな感じに初期化された状態になっているんですねぇ。
(↑これは、PHPの目玉だったらしいですが・・・)
ですので、$_GET['a'] とかを使ってない場合
version変更でハマります。。。
というか、万が一
使ってる人がいたら、
さっさと書き直したほうがいいかも。
だって、URL変数で
予期せぬ変数書き換えされちゃいますから・・・ねぇ。
↑それはお前だろ・・・ってつっこまれそうですが笑
でも、このコード書いたの、私じゃないですからね。。。
投稿者 erika : October 28, 2005 11:32 PM