WordPressをPHP7からPHP8へ安全にバージョンアップするためにしたこと実務ログ

WordPressをPHP7からPHP8へ安全にバージョンアップするためにしたこと実務ログ

9年運用・500記事超のサイトで実際に行った本番移行の記録です。

前提条件

今回の案件は、9年前に自分が制作したWordPressオリジナルテーマのリニューアル依頼で、

  • PHP7(7.4) → PHP8(8.3)にバージョンアップ

することになりました。

長期運用のため記事数が膨大で、安全に変更する必要がありました。

この記事で扱う「本番反映」の前に、以下の作業はすべてLOCALで完了済です。

  • PHP8環境でのテーマコード修正
  • プラグインの対応・入れ替え(PHP8対応済)
  • 表示・動作確認

この流れ・修正方法については「9年前のWordPressをPHP7からPHP8へ&クラシックエディタからブロックエディタに対応にした実務ログ【全体の流れ】」に詳細を記載しています。

この記事では「LOCAL作業完了 → 本番反映およびPHPのバージョンアップ」の流れのみを記録します。

本番反映の流れ

STEP 1:LOCALで最終確認する(PHP8)

本番環境へ移す前に、LOCAL上で以下を一通り確認します。

  • PHP8環境でテーマのエラーが出ないこと
  • プラグインが正常に動くこと
  • 表示崩れがないこと

ここまでの作業はすべてLOCALで行ってきているので、最終チェックの意味合いです。

問題がなければ次のステップへ進みます。

STEP 2:テストサイトのサーバーをPHP7系にダウングレードする(PHP7)

LOCALでの確認が取れたあと、いきなり本番に反映するのではなく、自分が管理しているテストサーバーで一度本番と同じ流れを実施します。

テストサイトのサーバーパネルから、テスト用サブドメインのPHPバージョンをPHP7系(修正前サイトに近いバージョン)に変更します。

PHP7にダウングレードしたら、テストサイトに

  • WordPressをインストール
  • All-in-One WP Migrationのプラグインをインストール

します。

STEP 3:テストサイトに現行サイトを復元する(PHP7)

テストサーバーにPHP7のWordPress環境の準備ができたら、

クライアントの現行サイト(PHP7.4で稼働中)をAll-in-One WP Migrationでエクスポート

次に、テストサイトにAll-in-One WP Migrationでインポートして、クライアントの現行サイトを復元します。

データ量が少なけければAll-in-One WP Migration単独で復元できますが、今回はデータ量が多かったため、

  • データベースはAll-in-One WP Migrationで出力&アップロード
  • 画像、プラグイン、テーマはFTPでアップロード

で復元しました。

これでクライアントの現行サイト環境が復元できました。

表示と動作を一通り確認します。

STEP 4:テストサイトにLOCALのPHP8対応済みデータを上書きする(PHP7)

PHP7で現行サイトの復元が完了したら、いよいよPHP8にバージョンアップするための手順に進みます。

流れとしては

  • データを先にアップロード&反映
  • 次にPHPをバージョンアップ

で進めます。

まず、LOCALのPHP8対応済みデータを下記手順でアップロードしました。

対象方法パス
DB(投稿・設定)All-in-One WP Migrationファイルからインポート
テーマファイルFTP上書き/wp-content/themes/
プラグインFTP上書き/wp-content/plugins/
メディア(画像)FTP上書き/wp-content/uploads/

※今回は画像が多かったためこの手順で進めていますが、All-in-One WP Migrationでデータをやりとりできる場合は、All-in-One WP Migrationで進めることをオススメします。

STEP 5:テストサイトで動作確認する(PHP7)

この状態はまだPHP7です。

PHP8対応済みのデータが、PHP7環境でも正常に動くこと(表示と動作)を確認します。

STEP 6:テストサイトをPHP8に切り替えて再確認する(PHP7 → PHP8)

動作確認が終わったら、いよいよPHPのバージョンアップを行います。

サーバーのサーバーパネルから、テストサイトのPHPバージョンをPHP8系に変更します。

切り替え後にもう一度、表示と動作を確認します。

もしエラーが出ている場合は、修正します。

ここで修正した場合は、こちらの修正済みデータを使います

投稿なども実際行って確認し、問題がなければ本番作業に進みます。

STEP 7:本番サーバーのバックアップを行う(PHP7)

テストサイトで問題がないことを確認できたら、いよいよ本番環境への反映に進みます。

手順は下記の通りです。

  • 本番サーバーのバックアップを行う
  • 本番サーバーに先にデータをアップロード&反映
  • 本番サーバーのPHPをバージョンアップ

本番サーバーでは失敗できないため、まずバックアップを行います。

私は、バックアップを2種類のプラグインで取りました。
(「All-in-One WP Migration」と「BackWpup」)

STEP 8:本番サーバーにPHP8対応済みデータを上書きする(PHP7)

バックアップが完了したら、いよいよ移行手順に進みます。

本番サーバーに、PHP8対応済みデータを上書きします。

テスト環境と手順は重複しますが、PHP8対応済みデータを下記手順でアップロードしました。

対象方法パス
DB(投稿・設定)All-in-One WP Migrationファイルからインポート
テーマファイルFTP上書き/wp-content/themes/
プラグインFTP上書き/wp-content/plugins/
メディア(画像)FTP上書き/wp-content/uploads/

※All-in-One WP Migrationで完了できる場合はAll-in-One WP MigrationだけでOKです。

トラブルメモ】インポート時にエラーが発生
All-in-One WP Migrationでインポートしようとしたところエラーが発生しました。原因は現行サイトのプラグインのバージョンが最新になっていなかったこと。
エクスポート側(LOCAL)とインポート側(エックスサーバー)でバージョンを揃えておくことが必須です。最新版にアップデートしたら解決しました。

この状態はまだPHP7です。

PHP8対応済みのデータが、PHP7環境でも正常に動くこと(表示と動作)を確認します。

STEP 9:本番サーバーをPHP8に切り替える(PHP7 → PHP8)

表示に問題がないことを確認できたら、本番サーバーのPHPバージョンを変更します。

本番サーバーパネルにログインし、PHPのバージョン切替から対象ドメインのバージョンを変更します。

切り替え後は本番サイトでも動作確認を行い、表示・投稿まわりに問題がないことを確認して完了です。

まとめ

今回は9年運用・500記事超のWordPressサイトをPHP7.4からPHP8へ移行した本番反映の手順を記録しました。

ポイントをまとめると以下のとおりです。

  • LOCAL → テストサーバー → 本番サーバーの3段階で進める
  • テストサーバーでは本番と同じ手順を一度通しておく
  • All-in-One WP Migrationはエクスポート・インポート両側のバージョンを事前に揃えておく
  • 本番作業前のバックアップは必ず複数手段で取る

長期運用サイトほど「いきなり本番」は危険です。テストサーバーで一度通しておくだけで、本番での事故リスクがぐっと下がります。

PHP移行を検討している方の参考になれば幸いです。