• 締切済み

PHP4.4.2→5.2.8 表示されません

こんにちは。PHP初心者です。 サーバ移行にともない、PHPのバージョンが4.4.2から5.2.8に変更になりました。 動作確認をしていたのですが、一部表示されていない箇所があります。 例えば、 ------------- http://www.URL/list.php?hen1=aaa ------------- というURLがあったとして、 list.phpの中に ------------- if($hen1 == "aaa") $title= 'タイトル'; ------------- という記述があります。 PHP4.4.2の時は該当の箇所に「タイトル」の文字列が表示されていましたが、現在は表示されていません。 このPHPは過去の担当者が作成したもので、前述の通り、私はPHPが全く分かりません。 もしお分かりの方がいらっしゃいましたら、ご教授いただけると助かります。 よろしくお願いいたします。

みんなの回答

回答No.3

どういうサーバ設定なのか分かりませんが、 例えばPHPの設定で、magic_quotes_gpcがonだったりすると、 特定の値はエスケープされます。 (5.2.8でそういう設定をしているとは思えないですが・・・) それを除去せずに比較しているのか、などと。 考えればキリがありません。 出ないということは、対象のif()または値の設定箇所、もしくは print、echoしている部分に問題があるから出ないわけなので、 その辺がサーバ移行によって正常に動作しているかを1つ1つ デバッグしながらなどして調査しましょう。 そもそも、それが仕様的にOKなのではないか? if()の直前にecho $hen1;exit;をしたらどう出力されるのか? $titleをechoまたはprintしてる前に$titleが書き換わっていないか? 結構、サーバ移行は、仮にレンタルサーバなどの移行だったとする場合、 環境が同一でないにも関わらず、ファイルをアップロードすれば 済むと思いがちですが、環境によって左右される部分もあるので、 設定回り、プログラム自体にアクセスできる人間が調べないと分かりません。 古い資産を動かそうとしてると、ソースがおかしくてそういうのに つまづいちゃって怖いですね。

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.2

まさかとは思いますがphp.iniのregister_globalsをonにしていました? http://www.URL/list.php?hen1=aaa でアクセスされると、自動で変数$hen1が発生するイメージでしょうか? もしそうならセキュリティ的にありえない状態なので、適合部分の修正が必要です。 $hen1=isset($_GET["hen1"])?$_GET["hen1"]:""; のような解釈をいれてください。 社内向けのサービスなどセキュリティ的に甘くてかまわないなら 前述のとおりregister_globalsをonにするだけでいけるかもしれませんが 非常に危険だということを理解しておいたほうがよいでしょう。

  • t_ohta
  • ベストアンサー率38% (5238/13705)
回答No.1

質問に書かれているif文自体には問題が無いと思いますので、その前で行っている処理か、最終的に出力を行っている処理の部分に問題があるのではないかと思います。 出力されたページのどこかか、サーバ上のログファイルにエラーメッセージが出ていると思いますので、エラー内容を確認しましょう。

関連するQ&A