PHP のバージョンを更新した。
このサイト(tudurucoto.info)は問題なく「PHP8.3.21」に更新できたのだが、このサイトより古くから運営している別サイトが、同じく「PHP8.3.21」に更新したら表示されなくなった。
WordPressの管理画面で状況を確認しようと思ったけれど、管理画面も同じエラーで表示されない。
とりあえず以前のバージョン(PHP7.4.33)に戻したら、サイトは元通り表示された。
但しこれは暫定処置、セキュリティ面などからPHPは推奨されるバージョンに更新しなければいけない。
原因を究明して、バージョンアップを計ることにした。
原因のヒントとなるのは次のエラーメッセージだ。
Fatal error: Array and string offset access syntax with curly braces is no longer supported in /home/xxxx(Xサーバーのアカウント名)/(サイトドメイン)/public_html/wp-content/plugins/count-per-day/counter-core.php on line 1517
簡単にまとめると「PHPの記述方法が古すぎて、新しいバージョンでは使えない」とのこと。
直訳すると「配列や文字列の添え字アクセスに {}
を使う構文はもうサポートされていません」ということ。 PHP 7.4 では非推奨、PHP 8.0 以降では{}
で配列や文字列の一部にアクセスできなくなっているらしい(アクセスできない=致命的エラー)。
その部分を書き換えれば良いようだが、そんなことはできない。
でも大丈夫、問題の発生源はちゃんとエラーメッセージ内にあった。
Fatal error: Array and string offset access syntax with curly braces is no longer supported in /home/xxxx(Xサーバーのアカウント名)/(サイトドメイン)/public_html/wp-content/plugins/count-per-day/counter-core.php on line 1517
問題の発生源はプラグイン。
- WordPressの「Count Per Day」というアクセス解析系プラグイン内のコード
- その中の counter-core.php の1517行目 に、古い書き方が残っている
レンタルサーバーの設定画面で「ついでにこっちのサイトも更新してしまおう」とやってしまったため、そのサイトのプラグインが最新になっているかどうかをチェックしていなかった。

PHPの更新手順を書いた記事にそう書いたのに、実行しなかったために起きたトラブルと言える。
問題のサイトの更新状況を確認したところ、22個も更新してない項目があった。
「Count Per Day」もあったが「更新」の選択ができない。
調べてみたら「Count Per Day」はすでに公式ディレクトリから配布停止されて更新も停止していた。
配布停止は2019年10月、詳細は未発表だが配信停止理由は「WordPressの[公式ガイドライン違反]によるもの(おそらくセキュリティ上の懸念事項あり)」、セキュリティ上のリスクがあるプラグインをずっと残していたことも分かった。
エラーが起きなかったサイトのほうはWordPressのダッシュボード上でアクセス数を確認できるプラグインに「Count Per Day」ではなく「Post Views Counter」(WordPress公式ディレクトリで配布中。最新バージョンにも対応)を使っていた。
プラグイン「Count Per Day」を停止・削除したところ、「PHP8.3.21」に更新後もサイトの表示に問題はなくなった。
このトラブルに気づけたのはプラグイン「Jetpack」のおかげだった。
無料版「Jetpack」でも使える機能「Downtime monitoring」をONにしていたため、サイトがダウンしている異常に気づくことができた(サイトがオフラインになるとWordPress.com アカウントに登録されているメールアドレス宛に異常を知らせるメッセージが届く)。

WordPressを始めるなら、迷わず「エックスサーバー」一択。
ブログの表示が速くて、月990円〜とは思えないほど快適。
使ってみて、「あ、最初からここにすればよかった」と思ったのは本当の話。
コメント