PHP8.1への対応不具合まとめ

PHP7のサポート終了に伴い、重い腰を上げてようやくPHP8への移行を開始しました。

大きく分けて3つの対応をすることになりましたので覚え書きです。

①テンプレートを使用している場合はテンプレートをアップデートする

テンプレートを使用したサイトの場合は古いテンプレートバージョンでPHP8.1への移行をしようとしても高確率でエラーとなります。しかも複数のエラーで直そうと思っても次から次へとエラーは引き起こされますので、素直に最新版のテンプレートにアップデートしましょう。

開発終了している場合や、買い切りで無償アップデートに対応してない場合は無理に変更しようとせず、新しいテンプレートへ切り替えてしまうか買い直しをした方が早いと思います。

テーマのアップデート方法

テーマをアップデートすると直接PHPをカスタマイズした部分が上書きされて消えてしまいます。
必ずバックアップを取ってからアップデートしましょう。

管理画面からアップデートできるテーマと、配布元からダウンロードしてきてアップロードを行うタイプのテーマがあります。

アップロードを行う場合、WPバージョンが5.4.4以下では同じテーマを上書きできません。
一旦テーマを削除するか、テーマ名を変更しておく方法がありますが、5.4.4はかなり古いのでバージョンアップをおすすめします。

子テーマ化している場合

上書きされずにアップデートできますので、そのままアップデートしましょう。

子テーマ化をしていない場合

まずテンプレートをダウンロードしてきてバックアップを取っておきます。
テーマ配布元のサイトにて最新版をダウンロードするか、管理画面からアップデートを行います。

編集した部分を目視して差し替えたり変更したりします。
かなり大変ですので、元PHPのカスタマイズを行った場合はその個所を分かりやすくコメントアウトなどで書いておくのが大事だと思いました。

②データベース接続確立エラーが出てしまう場合はMySQLのアップデートが必要

MySQLのバージョンが古いのでバージョンアップをします

サーバーにログインしてMySQLのバージョンをアップします。

Xサーバーの場合は古いデータベースは残ったまま、新しいデータベースが確立されます。
wp-config.phpのデータベース名を新しいデータベースに書き直せばOKです。

不要なデータベースは削除しないと大変です

データベースのバージョンアップを行うのには同じサーバーにある全てのデータベースでエラーが無い事が必須です。

よくあるのが「パスワードが不適切」と表示されてしまい先に進めないエラーです。
これは同じパスワードでOKなのでユーザー名設定の画面で一度パスワードを入力しなおすと直るのですが、全てのデータベースでこれを行う必要があります。

確立したはいいけど放置していてパスワードが分からないというデータベースは削除しなけば先に進めませんので、この機会に削除整理することをおすすめします。

③表示はされるが…よく見るとサイトの一部にエラーコードが表示されている場合の対処法

テンプレートを使用しないオリジナルデザインの場合は比較的スムーズにPHP8.1への移行ができましたが、表示されたと油断してはいけません。
サイトを隅々までみてみるとこんな風にエラーコードが表示されている事があります。

この記述は「どのファイルの何行目のコードがおかしい」という大変ありがたい記述です。

ChatGPTに聞くと一瞬で正しいソースを書いてくれます!

エラーに表示されている個所をコピーしChatGPTに貼り付け
「このソースはPHP8にアップデートすると動かなくなるので正しいソースを書いて」
と指示すれば書いてくれますので、差し替えると動くようになります!

まとめ

丸3日ほどかかりましたがまだ対応しきれません。

特に大変だったのは以下の作業です。

  • テーマのカスタマイズ部分をメモしていなかったので、まずは元PHPにメモを書き足して、バージョンアップした時にカスタマイズした部分を差し替える作業
  • データベースを放置していたので、不要なデータベースを調べて慎重に削除を行う作業

いずれも過去の自分が横着をしていたのが今響いていると痛感しています。

今後は以下に気を付けて制作をしたいと思います。

  • サーバーのシェアはやめる。各社1サーバーで構築する。
  • しっかりと説明をした上で運用契約を結んでもらう。ワードプレスをインストールしたサイトでは保守なしはありえない。
  • できるだけ元PHPの編集はしない。どうしてもの場合は修正編集個所が分かるようにソース内や別途メモを取っておく(どのファイルの何行目など)
  • 買い切りで無償アップデートがないテンプレートの使用は避ける
  • データベースは使わない場合はすぐに削除する。データベース名はきちんと一覧で控えて置く。
Home
つくる
特長
無料相談
公式LINE
問合せ