WordPressのバージョンとPHPのバージョンをアップデートしたときにおこる不具合
2022.04.26WordPressが5.1でPHPのバージョンが5.4のサイトがあり、近い将来サーバー側でPHPのバージョンが強制的に8.1に切り替わるというのでPHP8.1に対応できるようにWordPressのバージョンを上げる必要がありましたので対応した内容をご紹介します。
バージョンアップの概要
かいつまんで説明すると
WordPress | 5.1 |
PHP | 5.4 |
↓↓↓
WordPress | 5.9 |
PHP | 8.1 |
といった状態を目指します。
幸いなことに今回扱うサーバーではコントロールパネルにて簡単にPHPのバージョンを切り替え(アップデート/ダウングレード)出来たのでとりあえずPHPを8.1に切り替えて不具合が出ないか確認しました。
「500Error」はい、不具合発生です。
すぐにPHPのバージョンを元の5.4に戻したらエラーは解消されました。
ということでPHP8.1だとWordPress5.1は動かないことが分かりました。
WordPressの各バージョンのPHPの動作環境を調べてみました。
WordPressバージョン | PHPの動作環境 | PHPの推奨バージョン |
---|---|---|
5.0 – 5.1 | 5.2.4 – 7.3 | 7.3以上 |
5.9 | 5.6.2 – 8.1 | 7.4以上 |
WordPress5.1の動作環境がPHPのバージョン7.3までになっています。
推奨環境がPHP7.3以上となってますが、PHP8.1だと動作環境を上回ってしまうためエラーになってしまったというわけです。
本来ならばWordPressのバージョンと同時にPHPを推奨されるバージョンへと上げていくのが好ましいのですが、お客様の方でPHPのバージョンは上げずにWordPressのバージョンだけ上げていたようです。
解決方法
解決方法はどちらも最新の状態にすること
とはいえ同時に最新(今回はWordPress:5.9、PHP:8.1)に挙げるのは危険を伴います。
PHPを最新にすれば先ほどのようにエラーになり画面が表示されなくなりました。WordPressを最新(5.9)にした場合もPHPが5.4とバージョンが低すぎて不具合を起こす可能性があるので、WordPressのバージョンアップとPHPのバージョンアップを刻んでアップデートすることにしました。
※ちなみに本番でそのまま作業を行うとリスクがありますので、今回はテストサイトを立ててそちらで作業的に問題がないか確認してから本番で実施しました。
手順
サーバーで切り替えられるPHPのバージョンが「5.4」「7.4」「8.0」「8.1」でした。
WordPress5.1が動作環境PHP7.3までとなってますが念のためPHPのバージョンを7.4に挙げて様子を見たら問題なく稼働しました。
次にWordPressを5.1→5.9にアップデートします。(問題なく完了)
最後にPHPを8.1にアップデート。(問題なく完了)
以上の手順にてWordPressとPHPを最新にすることが出来ました。
- PHP5.4からPHP7.4にアップデート
- WordPress5.1からWordPress5.9にアップデート
- PHP7.4からPHP8.1にアップデート
※先にテスト環境にて確認しましたので同じ作業を本番で行い実装しました。
それでも起こる不具合
これで問題なく完了と思いきや、WordPress自体は問題なかったのですが「カスタム投稿タイプの記事の画像が表示されない」「プラグインにて警告が出る」など一部不具合が発生しました。
カスタム投稿タイプの記事の画像が表示されない
wp_get_attachment_image_src($post->cf_img01, full);
この部分で「full」の画像が未定義だというエラーが出てしまいましたが
wp_get_attachment_image_src($post->cf_img01, 'full');
にしたらエラーは解消されました。
ちょっと分かりにくいですが、「full」の部分を「’full’」に変更しただけです。
以前のバージョンでは「full」でも通ってたのがバージョンを新しくしたらこの辺りの判断が厳格になったようです。
プラグインによる不具合
プラグインに関しては使用しているプラグインの対応バージョンが5.9に満たなかったようです。
WordPressもプラグインも常に更新することが望ましいですが、プラグインの開発元が最新のバージョンに合うようアップデートしていなければWordPressのバージョンをアップした場合不具合を起こす可能性があります。
バージョンアップしてみて問題ない場合もあるので杞憂に終わることもあるのですが、プラグインのソースを隅々までチェックするのも現実的ではないので、やはりテスト環境でアップして不具合が出るかどうかを確認するといったやり方が一番です。
今回は必要ないプラグインでしたので無効化することによって解決しました。
解決を試みるのであれば、「プラグインが対応されるのを待つ」「プラグインを解析して独自に改修」「別のプラグインに変える」などが必要になります。
メジャーで利用者が多いプラグインであれば開発元も定期的にアップデートしてくれるのですが、マイナーで利用者が少ないプラグインだと開発元がアップデートを辞めてしまう場合があるのでこういった考慮してプラグインを選ぶことも大事です。
最後に
今回は保守をしていないお客さまでしたので数年ぶり(6年ぶり?)くらいにお問合せがありWordPressやPHPを最新にする対応を行いました。
基本的にはWordPressもプラグインも定期的に最新状態へとアップし、PHPやデータベースもその時々で推奨環境へとアップデートしておくことが好ましいです。(ていうかそうしないと今回のように色々と問題が起こる)
しかしWordPressやプラグインは管理画面から簡単にアップデートできますが、PHPやデータベースとなるとサーバー側での作業を伴いますので環境だけ古い状態で放置されてしまうといったケースは多々あるかと思います。
WordPressを健全に運用するには避けて通れない道ですので環境についてもしっかり理解するか、誰か詳しい方(業者)に対応していただけるような体制にした方が良いでしょう。