WEB & SYSTEMS

PHPのバージョンアップの進め方。サイトを止めずに版を上げる手順

PHPの版上げは、仕組みと部品の書き出し、新しい版で変わる点の確かめ、試験の環境での確認、戻す手順を決めたうえでの本番の切り替え、の順に進めます。止まりやすい箇所と、版上げで済まず作り直しを考える目安もあわせて説明します。

この記事の要点

  • 版上げの前に、サイトの仕組みと使っている部品、サーバーの契約と管理画面を書き出し、新しい版に対応しているかを確かめます。
  • 本番を複製した試験の環境で新しい版を動かし、決めておいた項目を確かめてから、戻す手順を用意したうえで本番を切り替えます。
  • PHPには版ごとの期限があるため、版上げは一度で終わらず、数年ごとにくり返す前提で、保守の契約と予算に組み込みます。

PHPのバージョンアップ(版上げ)は、試験の環境で新しい版のPHPを動かして確かめ、戻す手順を用意したうえで本番を切り替える、という順番で進めると、サイトを止めずに済む見込みが高くなります。サーバーの管理画面でPHPの版をいきなり切り替えるのは、手順としては簡単ですが、古い書き方の処理が動かなくなる危険があります。

版上げは、仕組みと部品を書き出す、新しい版で変わる点を確かめる、試験の環境で動かす、戻す手順を決めて本番を切り替える、の4つの段階で進めます。

PHPの版上げの4つの段階

仕組みと部品を書き出す
新しい版で変わる点を確かめる
試験の環境で動かす
戻す手順を決めて、本番を切り替える

サーバーの管理画面でいきなり版を切り替えると、古い書き方の処理が動かなくなる危険があります

なぜ版上げが必要になるのかは、PHPの脆弱性とは。サポートの終わった版を使い続けると何が起きるのかで説明しています。

1. 仕組みと部品を書き出す

最初に、サイトが何で作られているかを書き出します。版上げで動かなくなるのは、多くの場合、PHPそのものではなく、PHPで書かれた部品や処理だからです。

  • サイトの仕組み:WordPress などのCMSか、Laravel などのフレームワークで作ったシステムか、独自に書いた処理か
  • 使っている部品:テーマ、プラグイン、ライブラリの名前と、いまの版
  • 独自に直した箇所:テーマやプラグインの中を直接直した箇所、独自に足した処理
  • サーバー:契約しているサーバーの会社とプラン、管理画面に入れる人、いまのPHPの版

部品ごとに、提供元の更新が続いているか、新しい版のPHPに対応しているかを確かめます。更新が長く止まっている部品は、新しい版のPHPで動かないことがあり、入れ替えの候補になります。

2. 新しい版で変わる点を確かめる

PHPは版が上がるときに、古い書き方を「非推奨」にし、いくつかの版の後で取り除くことがあります。非推奨の段階では注意の表示が出るだけでも、取り除かれた後はエラーになって処理が止まります。

PHPのマニュアルには、版ごとの移行の手引き(「PHP 8.3.x から PHP 8.4.x への移行」など)があり、変わった点、取り除かれた機能、非推奨になった機能がまとめられています。いまの版から上げる先の版までの手引きを、順に確かめます。版を2つ以上飛ばして上げる場合は、間にあるすべての版の手引きが対象です。

出典:付録(PHP マニュアル)

上げる先の版は、サポートの期限が長く残っている版を選ぶと、次の版上げまでの間隔を空けられます。各版の期限はPHPのサポート期限の一覧で確かめられます。

3. 試験の環境で動かす

本番のサイトを複製した試験の環境を用意し、PHPを上げる先の版に切り替えて動かします。レンタルサーバーには、サイトを別の場所に複製する機能を持つものもあります。

試験の環境では、次の点に気をつけます。

  • 検索に載らないよう、パスワードなどでアクセスを制限する
  • お問い合わせのフォームなどのメールが、お客様に届かないよう、送り先を社内の宛先に変える
  • エラーの記録(ログ)を見られるようにし、画面に出ない警告も拾う

そのうえで、版上げの後に確かめる項目を一覧にし、一つずつ確かめます。見た目だけでなく、動きを伴う操作を入れることが大切です。

  • 主なページの表示
  • お問い合わせのフォームの送信と、メールの到着
  • 会員のログイン、検索、決済などの機能
  • 管理画面での記事の更新、画像の追加

動かない箇所が見つかったら、部品の更新や入れ替え、処理の書き直しで直し、もう一度確かめます。

4. 戻す手順を決めて、本番を切り替える

試験の環境で問題がなくなったら、本番を切り替えます。切り替えの前に、次の準備をします。

  1. 切り替えの直前に、ファイルとデータベースのバックアップを取る
  2. うまく動かなかったときに、PHPの版を元に戻す方法と、バックアップから戻す方法を確かめておく
  3. どんなときに戻すか(フォームが送れない、など)と、戻すことを決める人を決めておく
  4. 問い合わせの少ない時間帯を選び、関係する人がすぐ連絡を取れる日にする

切り替えた後は、試験の環境と同じ一覧で確かめます。その後もしばらくは、エラーの記録と、お問い合わせの件数などに変化がないかを見ておくと、見落とした不具合に早く気づけます。

版上げで済まないとき

古い版のフレームワークで作ったシステムや、制作会社がすでにない独自のシステムでは、版上げに伴う直しが広い範囲に及び、作り直したほうが費用と期間の見通しが立てやすい場合もあります。

版上げか作り直しかを決めるときは、直す範囲の見積もりだけでなく、これから何年使うか、その間に機能を足す予定があるか、引き継げる技術者を見つけやすいかもあわせて比べます。古いシステムを刷新する考え方は、古くなったシステムを刷新する(モダナイゼーション)の進め方もご覧ください。

版上げを続けるために

PHPの版ごとの期限は、最初の公開から4年間です。一度版を上げても、数年後にはまた次の版上げが必要になります。版上げを一度きりの大仕事にしないために、次の点を決めておきます。

  • 保守の契約に、PHPやCMSの版上げを誰が、どの範囲で行うかを書く
  • サポートの期限の1年ほど前から、次の版上げの計画を立てる
  • 部品の一覧と、版上げのときに確かめる項目の一覧を、次の版上げのために残す
  • 版上げの費用を、数年ごとに発生するものとして予算に入れる

当社のご支援

アメリア・テクノロジーでは、PHPの版上げを、仕組みの書き出しから試験の環境での確認、本番の切り替え、その後の保守まで一貫してご支援しています。版上げで済まない場合のWebシステム開発による作り直しもご相談いただけます。まずは無料のPHPバージョン診断で、サイトの版とサポートの状況を確かめ、詳しいレポートで進め方の目安をご覧ください。ご相談はPHPのバージョンアップのご相談からお受けしています。

  • PHP
  • バージョンアップ
  • WordPress
  • 保守
  • セキュリティ

この記事に出てくる用語

この記事を書いた人

石田 誠 グループCTO

インターネットの黎明期から、ホスティング事業の立ち上げや、インフラ・セキュリティのプロジェクトに携わってきました。現在は、AWS・Azure へのクラウド移行の支援と、業務アプリケーションの要件定義から実装までを担っています。

このコラムは一般的な情報の提供を目的としたもので、個別の状況への助言ではありません。製品・サービスの名前と内容は、記事の更新日の時点のものです。

あわせて読みたい

Webとシステム開発のコラムを見る コラムの一覧に戻る

無料で相談する無料の診断