さくらインターネットのコントロールパネルを見ていると、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に追記したほうが良いのかもしれません。
今後、対応方法について検討します。
解決!
今でも更新が行われている「PHP Code Widget」と同等機能を持つプラグイン、「Enhanced Text Widget」に切り替えてみました。
そして、PHPのバージョンを上げたところ、何事も問題なく、ページが表示できるようになりました。しばらく、この状態で運用していきたいと思います。
コメント