PHP7.xからPHP8へのバージョンアップ及び注意点について

WordPressの構成に使われているPHP。PHPバージョン7.4はサポート期限が「2022/11/28」となっています。サポート期限が切れたバージョンを使い続けることはセキュリティリスクがありますので、サポート期限内のバージョンにアップグレードすることをおすすめします。

バージョンリリース日アクティブ
サポート期限
セキュリティ
サポート期限
7.42019/11/282021/11/282022/11/28
8.02020/11/262022/11/262023/11/26
8.12021/11/252023/11/252024/11/26
PHP公式ページ(https://www.php.net/supported-versions.php)

メジャーバージョンへのアップグレードにはいくつか注意点があります。トラブル発生時には以下手順をお試しください。

今回の作業はPHPバージョン5.6⇒8.0へのバージョンアップ作業

今回実施する作業では対応前はPHPのバージョンが5.6となっていたため、バージョン8.0へのバージョンアップ作業を行います。

まずは作業手順を説明し、その後トラブル発生時の対応方法について説明します。今回利用しているレンタルサーバは「ロリポップ!」となっていますので、そちらのレンタルサーバ管理画面を利用して説明します。

作業

管理画面からPHPのバージョンを変更します。

バックアップ取得

WordPressの資材及びDBのバックアップを取得します。バックアップを取得するために便利なプラグインを2つ紹介します。All-in-One WP Migrationは断面バックアップを取得するのに便利です。作業前がWordpressの引っ越し作業などでよく使われるプラグインとなります。

All-in-One WP Migrationの復元について

プラグインでバックアップを取得するのは簡単ですが、同プラグインで復元しようとするとアップロードの上限が20MBとなりますのでサイズが大きいバックアップファイルは復元に注意が必要です。

BackWPupは断面的なバックアップ以外にも定期的にバックアップを取得する作業に適していています。Cronを使ってスケジューリングすることができますので、断面だけではなく継続的にバックアップを取得することができ、さらに世代管理も設定画面にて行うことができます。

バージョンアップ作業

各レンタルサーバの管理画面よりバージョンアップを行うことができます。

ロリポップトップ画面
ロリポップログイン画面
ログイン画面
ロリポップユーザ管理画面
PHP設定選択画面
PHPバージョン変更画面
PHPのバージョン
バージョンアップは作業時間に注意

バージョンアップをした際にうまく表示されないケースがあります。日中などに作業をするとサイトが表示されない状態となり機会損失となります。特にECサイトなどサイトから売り上げを立てる場合にはサイトが表示されないだけで売り上げが落ちることになるため、バージョンアップ作業を行う際にはできるだけアクセス数が少ない時間帯に行うようにしましょう。

またバージョンアップ後うまく表示されない場合はバージョンを戻すことも必要になりますので、戻しの可否及び手順は事前に整理しておくことをおすすめします。

動作確認

実際にサイトを開いて画面レイアウトに崩れがないかを確認します。PHPのバージョンアップの場合エラーが起きるのはPHP関連が多いためヘッダー・フッターなどにエラーが発生する場合があります。

エラー発生時の確認方法

エラー発生時、確認準備

PHP.iniにてエラーを画面に表示できるように設定できます。

作業タイミングに注意!

エラーを画面に表示するようにするとエラーだけではなくワーニングも表示します。通常エラーは表示されないように見えますが、ワーニングは多く発生していることが多く、本作業をすることで画面上にワーニングが表示されます。

夜間などアクセス数が少ない時間で作業をするようにしましょう!

display_errorsをonにすることで画面にエラー・ワーニングが画面に表示されます。

画面にエラーを表示すると、どのファイルの何行目にエラーが発生しているのかがわかりますで、該当ファイルの該当箇所を確認しエラーを修正します。

エラー内容①:画面が表示されない(真っ白)

サイトを開いて画面が真っ白になった場合、、、PHPのエラーが発生しています。上記でPHPのエラーを表示されると該当箇所及びエラー情報が表示されますので内容を確認してください。

たいだいは{}を[]に修正

if ($dynamicRuleType{0} == 'M' || $dynamicRuleType{0} == 'Q') {

PHP8になると{を使った場合、エラーとなります。正しくは[とする必要がありますので、上記のケースは以下のように修正します。

if ($dynamicRuleType[0] == 'M' || $dynamicRuleType[0] == 'Q') {

このようなケースは数多く存在するとは思いますが、根気よく変換していく必要があります。一括変換を使うと予期せぬ箇所まで変換してしまうため、新たなエラーが発生してしまいます。手間ですがしっかり目視し、修正箇所であることを確認してから変換しましょう!

コメントアウトはphpないで行う

サイトの表示が途中までしか表示されない場合はソースの途中で不適切なコーディングがある場合となります。その場合は画面のソースを開いてどこまでHTMLが表示されているかを確認します。その結果、Wordpress内の固定ページや投稿ページから該当ページを開きサイトに表示されているソースを確認します。

以下は事例ですが、コメントアウトをする際にPHPをHTMLごとコメントアウト化している場合があります。PHP7ではこのようなコーディングでも問題なくコメントアウト化されHTMLに影響を及ぼしません。ただしPHP8ではPHPが正しくコメントアウト化されないためサイトの表示が途中までの表示となります。

<!-- <p><?php echo $hoge;?></p> -->

そのためPHP部についてもPHPのコメントアウト化を行います。

<!-- <p><?php // echo $hoge;?></p> -->
HTMLとPHPのコメントアウトについて

HTMLのコメントアウト <!– –>

PHPのコメントアウト // または /* */

上記対応が終わりましたらサイトをF5で更新してください。

参考サイト

まとめ

PHP7.xをPHP8へバージョンアップする際の注意点をまとめてみました。PHPのバージョンアップは不具合が起きる可能性が高く、作業のタイミングとバックアップ手法をしっかり整理してから作業に当たることをおすすめいたします。

サイトだけでなく、システムでPHPを利用している場合は表示確認だけではなくシステムの基本的な動作まで確認することをおすすめ致します。

PHP7.xのサポート切れに伴い、バージョンアップしたいけど方法がわからない、不安がある、などの場合は問い合わせフォームよりご連絡ください。