質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

DB2

DB2(IBM Database2)は、IBMのリレーショナルデータベース管理システム製品です。 UNIXとWindows、IBM社のメインフレームOS用が用意されており、 幅広いプラットフォームに対応しています。

Q&A

解決済

2回答

736閲覧

PHPバージョンアップ

ej-ack

総合スコア6

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

DB2

DB2(IBM Database2)は、IBMのリレーショナルデータベース管理システム製品です。 UNIXとWindows、IBM社のメインフレームOS用が用意されており、 幅広いプラットフォームに対応しています。

0グッド

1クリップ

投稿2020/10/15 08:33

WEBサーバーのリプレイスを機にPHP5.2.14からバージョンを上げたいと思っています。

できれば最新と思っていますが注意点や変更しなければならないことがあれば教えて頂きたく存じます。

特に、データーベースへの接続方法について今までの記述が使えるのかが一番気になります。
データベースはDB2、ODBC接続しています。

バージョンを上げてもこのままの記述で大丈夫でしょうか。
今までバージョンを
ご教示いただきますようお願い致します。

PHP

1<?php 2 3// ODBC接続パラメータ 4$DATA_SOURCE = "odbc:DB2" ; 5$USERNAME = "XXXXX" ; 6$PASSWD = "XXXXX" ; 7 8// DBの接続 9$DBH = new PDO("$DATA_SOURCE", "$USERNAME", "$PASSWD" ); 10$DBH->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 11 12 13// レコードの取得 14$SQL = "select * from $TABLENAME" ; 15$STH = $DBH->prepare($SQL); 16$STH->execute(); 17 18while ( $ROW = $STH->fetch(PDO::FETCH_ASSOC) ) { 19 foreach ( $ROW as $KEY => $VAL ) { 20 print "$KEY = $VAL "; 21 } 22 print "<BR>" ; 23} 24 25 26 // DB接続の終了 27unset($DBH) ; 28 29?> 30 31 32 33 34

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

hentaiman

2020/10/15 08:59

いやーやばいですね 業務ならあり得ないですが、趣味のブログなら試してみたらいいんじゃないですか
ej-ack

2020/10/15 09:05

すみません やばいとはどのあたりでしょうか・・・
yut148

2020/10/15 09:06

OSは何をお使いでしょうか?
hentaiman

2020/10/15 09:11

バージョンによる差異を自身で比較調査もせずにQAで聞いた答えで済まそうって考え方がヤバイです。もしここで得られた回答が間違っていて復旧不可能な不具合を発生させてしまった場合はどうするんでしょうか?賠償請求されたりするんでしょうか? お金を貰ってやる作業であれば通常テストの環境で試して問題が無ければ本番に反映します。新規に受けた案件で環境がないならテスト用の環境を自前で用意します。 趣味の範囲であれば試しにアップデートしてダメなら戻すだけ。
ej-ack

2020/10/15 09:22

yut148 様 現在OS Windows2008サーバを使用しています。 リプレイス後は2016サーバーになる予定です。
ej-ack

2020/10/15 09:30

hentaiman hentaiman 様 調査不足で申し訳ありません 業務(社内イントラ)で使用しております。サーバーリプレイス後も当分平行稼働させるので検証期間はあるのですがあまり検証時間をとることができないのでまえもって準備することや現在のバージョンがかなり古いので最新にするのがいいのかどうかと迷っており、質問させて頂きました。 ご忠告ありがとうございます。
hentaiman

2020/10/15 09:34

それなら業務にクリティカルな影響が出ないならソースだけバックアップ取ってバージョンアップしてしまえばいいのではないですか?動けばラッキー動かなければエラー調査するなり、ピンポイントでエラー箇所が特定出来てればそれを質問で投げて回答内容を試す、ダメならバックアップへ戻す。 クリティカルだったら結局やる事は同じでテストサーバーごと用意するしかないですが。
yut148

2020/10/15 09:43

申し訳ありませんがWindowsについては知見がないので別の回答者からの回答を御期待ください。
ej-ack

2020/10/15 09:53

hentaiman様 ご回答ありがとうございます。 バージョンアップしてエラーが出て解決できなかったらもう一度こちらで質問させていただくことにします。 色々教えて頂きありがとうございました。
ej-ack

2020/10/15 09:54

yut148様 ご回答ありがとうございました。
m.ts10806

2020/10/15 11:26

>PHP5.2.14から DBまわり以外のほうが変更点おおいのではと思います。 このコードだけでは何とも言えないというのが現状ですね。 ローカルでちゃちゃっとXAMPPなど入れて試してみたほうがいいんじゃないでしょうか。
ej-ack

2020/10/15 11:45

m.ts10806様 XAMPP初めて知りました。 調べて試してみたいと思います。 質問の仕方ももう一度見直します。 教えて頂きありがとうございました。
kai0310

2020/10/15 12:36

バージョンアップ以前の問題としてもう少しコードに改善の余地があると思います。。。 この機会にもう一度見直されてはどうでしょう。
ej-ack

2020/10/15 13:35

kai0310様 ご指摘ありがとうございます。 色々調べながら独学でコード書いて、動いたらOKでやってきたのでこの機に見直してみたいと思います。ありがとうございました。
ej-ack

2020/10/15 14:19

kai0310様 ありがとうございます。 教えて頂いたサイトざっと見てみましたが初心者が陥りやすい書き方、いっぱいしてました…じっくり読んで勉強しなければと痛感しております。 とても、参考になります。ありがとうございました。
guest

回答2

0

ベストアンサー

移行の注意点に関しては、マニュアルがまとめてくれています。
PHP 5.2.x から PHP 5.3.x への移行 他 - php.net

5.2 から 7.X まで順に押さえていけばよいかと。

ただ、5.2 で作られたコードは、そもそも今どきの設計思想を反映していません。

個人的には(今後の運用まで考えると)要件の洗い出しを行い、再設計、適当なフレームワークを使用して作り直した方が良いと思います。

投稿2020/10/16 01:18

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ej-ack

2020/10/16 08:35

te2ji 様 ご回答ありがとうございます。 教えていただいたURLからたどり https://www.php.net/manual/ja/migration70.php まで見てみました。 5.2 で作られたコードは、そもそも今どきの設計思想を反映していないのですね・・・ 調べているとセキュリティー的にもよくないということが書かれていました。 バージョンアップは定期的にしたほうがいいのですね・・・ 現在フレームワークは使用していないので調べてみます。 ありがとうございました。
退会済みユーザー

退会済みユーザー

2020/10/16 09:04

php のバージョンアップ対応は、基本的にはコード全体を視野に入れたリファクタリングになります。 リファクタリングする際、テストしないと信頼できる根拠が持てません。 そこでテストを実施するための環境を整えることになりますが、php 5.2 の頃のコードは、そもそもユニットテスト等が出来るような設計にもなっていないので、テスト工数がかなり高額になる傾向があります。 設計書が既存にあったり、要件整理がすでにできているのであれば、フレームワークを使用した新環境に移行した方が、コスト的にメリットを出せるケースも多いです。 > 調べているとセキュリティー的にもよくないということが書かれていました。 php 5.2 の頃は「セキュリティを気にするなら php を使うな」と言われていた時代です。 参考:https://blog.tokumaru.org/2014/12/phpphp.html register_globals や マジッククォートが設計の根幹にあるので、そのまま移行することはまず出来ません。 外部公開できるレベルにセキュリティを引き上げようとするのは、かなりヤッカイです。
ej-ack

2020/10/16 10:30

te2ji 様 詳しいご説明を頂きありがとうございます。 今は社内のイントラ上で公開しているだけなのでセキュリティについて今まであまり気にしたことがありませんでした。ただ、このコロナ禍でテレワークが普及し、今後どういう形で公開することになるか分からないのでセキュリティについても考える必要があると思っています。 おっしゃる通り 今のソースに修正を加えるより、フレームワークを利用して作り直すほうがいいように思えてきました。
guest

0

バージョンアップしてエラーがでて解決できなかったときに再度質問させていてだきたいと思います。
追記修正で教えて頂いた皆様ありがとうございました。

投稿2020/10/15 11:48

ej-ack

総合スコア6

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

m.ts10806

2020/10/15 11:51

質問は編集できるので、ここで「回答」として投稿するより、試してみた結果問題が出たら質問に追記、 解決したら回答として投稿したほうが良いかと思います。
ej-ack

2020/10/16 00:20

m.ts10806様 ご指摘いただきありがとうございます。 自己解決はずしました。 利用方法教えていただきありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問