PHPのバージョンを8に上げたらWordPressで重大なエラーが発生

さくらインターネットのコントロールパネルを見ていると、PHPのバージョンで8.0が選べるようになっていました。今まではバージョン7.4.21を使っていました。PHP 8.0は2020年11月にリリースされた最新のバージョンで、パフォーマンスが大きく向上しているほか、言語仕様の見直しと拡充、エラー処理の改善で今までよりもソースコードを簡潔に記述できるようになっています。

パフォーマンスの向上に期待

パフォーマンスの向上に寄与しているのは実行時コンパイラー(JIT)の存在で、リクエストが来た時点でソースコードをネイティブコードにコンパイルするようになりました。もう一度、同じ処理がリクエストされると、コンパイルされたネイティブコードがそのまま実行されるため処理が高速化されます。とくに長時間実行されるアプリでは1.5倍から2.0倍の処理速度のアップが図られています。

そこで、さくらインターネットのコントロールパネルで、PHP8.0のモジュールモードを有効にしてみました。

致命的なエラーが発生

そのうえで、ブログの記事を開いてみると、「致命的なエラーが発生した」というエラーメッセージが表示されて、ブログは表示できなくなってしまいました。原因はPHP8.0に変えたことでまず間違えないのですが、そもそも何が大元の原因なのかということが気になります。

エラー情報はどこから見ることができるのか調べてみると、WORDPRESSの管理者あてにメールが来ていました。WordPress 5.2から、サイトでプラグインやテーマが致命的なエラーを発生させた場合にそれを検知してこの自動メールでお知らせする機能が追加されたのだそうです。初めて知りました。

今回は、WordPress がプラグイン PHP Code Widget でエラーを捉えたと、とても分かりやすく通知してくれました。対応方法まで書かれています。ダッシュボードに接続できない場合にはWordpressの特別なリカバリモードがあり、そのリカバリモードでログインするためのURLまで記載されています。

すべて日本語で通知してくれているので、内容がとても分かりやすいのが印象的でした。オープンソースなのに至れり尽くせりという感じです。

PHP Code Widgetは最終更新が2年前になっているので、確かに去年公開されたばかりのPHP8.0には対応できていないのかもしれません。ネット検索をして何か対応手段がないのか調べたのですが、現時点で見つけることができていないので、PHP7.4.21にまた戻しておきました。

ウィジェットの中でPHPを使いたいので、PHP Code Widgetを使っていたのですが、こちらの記事にあるようにfunction.phpに追記したほうが良いのかもしれません。

WordPressのウィジェットでPHPを利用する方法 | KOBE WING
問題点 テーマにもよるが、通常WordPressのウィジェットでPHPコードが使えなくて不便である。 対処方法 対処方法としては、下記があります。 プラグインを利用する方法fun...

今後、対応方法について検討します。

解決!

今でも更新が行われている「PHP Code Widget」と同等機能を持つプラグイン、「Enhanced Text Widget」に切り替えてみました。

そして、PHPのバージョンを上げたところ、何事も問題なく、ページが表示できるようになりました。しばらく、この状態で運用していきたいと思います。

 

コメント

タイトルとURLをコピーしました