「古いPHPを新しいバージョンに更新してください」
このように依頼したところ、想像以上の見積もりや作業期間を提示され、驚いたことはないでしょうか。
サーバーの管理画面にはPHPを切り替える項目があります。それなら、設定を変更するだけで終わるようにも思えます。画面や機能を変える予定がなければ、なおさらです。
実際には、PHPを切り替える操作と、その環境でシステムを正しく動かすための作業には、大きな違いがあります。
ただし、古いPHPだからといって、必ず大規模な改修が必要になるわけではありません。この記事では、PHP4・PHP5で作られたシステムを新しいPHPへ移行する際、どのような作業が必要になり、何によって負担が変わるのかを解説します。
※php2shellについてはこちら
PHPの更新は「プログラムを動かす土台」の更新
PHPは、Webサイトや業務システムのプログラムをサーバー上で動かすための言語です。WordPressや独自CMS、予約システム、管理画面などで利用されています。
PHPを更新することは、プログラムを動かす土台を更新することにあたります。
新しいPHPでは、機能の追加だけでなく、古い機能の廃止や、処理のルールの変更も行われています。そのため、以前のPHPでは動いていたプログラムが、新しいPHPではエラーになったり、異なる結果を返したりする場合があります。
特にPHP4・PHP5からの移行では、長年にわたる変更の影響を確認する必要があります。
なぜ、同じプログラムが動かなくなるのか
昔使えた機能が、廃止されている
分かりやすい例が、データベースへの接続です。
古いPHPで使われていた「mysql_connect」などの関数を含むMySQL拡張は、PHP7で削除されました。これらを使用している場合は、MySQLiやPDOなどを使う形への修正が必要です。
これは、単に関数名を置き換えれば完了するとは限りません。接続方法に加え、データの取得方法やエラー処理なども確認する必要があります。
エラーの扱いや、値の処理方法が変わっている
以前は警告を出しながら処理を続けていた箇所が、新しいPHPではエラーとなり、処理を継続できなくなることがあります。
また、数値と文字列の比較など、処理結果に関わるルールの変更もあります。
そのため、「エラーが表示されなくなった」だけでなく、条件分岐や計算が期待どおりになっているかを確認することが大切です。
外部のライブラリも対応が必要になる
システムには、自社で書いたプログラムだけでなく、メール送信、PDF作成、画像加工などのライブラリが組み込まれている場合があります。
それらが新しいPHPに対応していなければ、更新や置き換えが必要です。ライブラリの使い方が変われば、呼び出しているプログラムの修正も発生します。
「画面が表示された」だけでは、更新完了とはいえません
例えば、予約システムを考えてみましょう。
トップページや予約フォームが表示されても、次の処理が正しく動くとは限りません。
- 空き状況を正しく検索できる
- 予約内容がデータベースに保存される
- 利用時間や人数に応じた料金が計算される
- 予約確認メールが送信される
- 決済サービスとの連携が動く
- キャンセル時に、適切な金額や状態へ更新される
普段は使わない管理機能や、月末にだけ動く集計処理が影響を受けている可能性もあります。
更新作業では、プログラムを動かすことに加え、業務として正しい結果になることを確認します。画面に大きな変更がなくても、この確認には時間が必要です。
実際には、どのような作業をするのか
1.現在のシステムを調査する
まず、何がどのように動いているかを把握します。
対象となるのは、プログラム、データベース、サーバー設定、ライブラリ、外部サービスとの連携、定期実行処理などです。
資料がない場合は、ソースコードや実際の操作から、システムの仕様を確認していきます。
2.修正・確認のための環境を用意する
利用中の本番環境で直接修正すると、不具合がそのまま業務停止につながります。
そこで、本番に近い環境を別に用意し、新しいPHPでの修正と動作確認を行います。
メールの誤送信や実際の決済が発生しないようにするなど、検証環境ならではの設定も必要です。
3.プログラムと関連部品を修正する
廃止された機能の置き換えや、処理の変更への対応、ライブラリの更新などを進めます。
修正対象は、目に見えるページだけではありません。管理画面、ファイルの取り込み、帳票の出力、定期的な集計なども対象になります。
4.業務上の動作を確認する
正常な操作に加え、入力漏れ、重複登録、権限の異なるユーザーによる操作なども確認します。
特に料金や在庫、予約数などを扱うシステムでは、更新前後で期待する結果になっているかを確認することが重要です。
5.本番環境へ切り替える
本番への適用前には、バックアップや移行手順を準備します。
稼働中にデータが増えるシステムでは、データの反映方法や停止時間も検討します。問題が起きた場合にどう戻すか、その間に登録されたデータをどう扱うかも、事前に決めておく必要があります。
同じ古いPHPでも、更新の大変さが違う理由
作業量は、PHPの古さだけでは決まりません。
例えば、数ページの情報表示と問い合わせフォームだけのサイトと、予約・決済・会員管理を備えた業務システムでは、修正範囲も確認項目も異なります。
さらに、次の条件によっても負担が変わります。
- システムの機能数と処理の複雑さ
- 古いライブラリや外部サービスへの依存
- ソースコードと設計資料の有無
- 仕様を理解している担当者の有無
- 開発・検証環境の有無
- 動作確認の項目や、期待する結果の明確さ
小規模で構成が単純なら、比較的少ない修正で移行できる場合もあります。一方、規模が小さくても、代替が難しい部品に依存していると、対応に時間がかかることがあります。
なぜ、最初から正確な見積もりを出しにくいのか
長年運用されているシステムでは、依頼する側も開発する側も、全体像をすぐには把握できないことがあります。
例えば、担当者が交代していたり、改修が繰り返されていたりすると、資料に載っていない機能や、誰も把握していない定期処理が見つかる場合があります。
また、「現在の動作が正しい仕様なのか、以前からある不具合なのか」を確認しなければならない場面もあります。
そのため、初めに現状調査を行い、その結果をもとに改修範囲と費用を決める進め方が適しています。
概算見積もりを見る際は、金額だけでなく、次の点も確認するとよいでしょう。
- 調査と検証環境の構築が含まれているか
- どの機能まで動作確認するか
- 本番への切り替え作業が含まれているか
- 調査後に費用が変わる条件は何か
- 更新後の不具合への対応範囲はどこまでか
AIや自動変換ツールを使えば、簡単になる?
AIや自動変換ツールは、修正候補の抽出や、繰り返し作業の補助に役立ちます。
ただし、書き方を変換できることと、業務上正しく動くことは別々に確認する必要があります。
例えば、料金計算のプログラムを新しいPHPで動くように修正できても、その計算が実際の料金規定と一致しているかは、仕様や確認用のデータがなければ判断できません。
ツールを活用して作業を効率化しつつ、システム固有の仕様を確認する工程は確保することが大切です。
更新費用を抑えるために、依頼する側ができること
不要な機能を整理する
今は使っていない機能まで、すべて移行する必要があるとは限りません。
不要な機能を整理できれば、改修や確認の対象を減らせます。ただし、ほかの処理から利用されていないかを確認してから判断します。
資料や業務上のルールを共有する
過去の仕様書、操作マニュアル、サーバー情報、外部サービスの契約情報などがあれば、調査を進めやすくなります。
資料がなくても、普段の操作手順や「この条件なら、この金額になる」といった具体例が役立ちます。
実際の利用担当者に動作確認へ参加してもらう
開発者だけでは、現場で重要な操作や、例外的な業務ルールを把握しきれないことがあります。
確認する範囲と役割をあらかじめ決め、実際に利用する方にも参加してもらうと、認識のずれを減らせます。
全面リニューアルしたほうがよい場合もある?
PHPの更新をきっかけに、システムの作り直しを提案されることもあります。
ただし、古いという理由だけで、全面リニューアルが最適とは限りません。必要な箇所を修正して継続利用する方法もあります。
一方、今の業務と機能が合わない、保守できる部品が残っていない、今後も大きな改修が続くといった状況では、作り直しや既存サービスへの移行を比較する価値があります。
初期費用に加え、データ移行、操作変更への対応、その後の保守費用まで含めて判断することが大切です。
更新後も、保守を続けられる状態に
PHP4・PHP5は、PHPプロジェクトによるサポートが終了しています。動いていることだけを理由に使い続けず、今後の運用方法を検討する必要があります。
また、新しいPHPへ移行した後も、定期的な更新は必要です。
今回用意した検証環境や動作確認の項目を残しておけば、次回の更新にも活用できます。サーバーの構成、更新手順、担当範囲も記録しておきましょう。
PHPのバージョンアップの負担を左右するのは、古さに加えて、システムの構成や管理状況です。まず現状を把握することで、必要な作業と、無理のない移行方法が見えてきます。
古いPHPシステムの更新について、ご相談ください
田村技術研究所では、PHPを利用した既存システムの現状調査、更新に伴う改修、検証環境の構築などのご相談を承っています。
「開発した会社に連絡がつかない」「資料や検証環境がない」「更新と作り直しのどちらがよいか分からない」といった場合も、現在の状況を確認するところからご相談ください。



