重大なエラー発生でサイトが表示されなくなった | WordPressプラグインエラー

web編

十数時間前まで正常に表示されていた自分のサイトが表示されなくなりました。

サイトを開こうとすると下のエラーメッセージが表示され、サイトを開くことができません。

重大なエラーが発生しているそうです。何なのでしょうか。

とにかく、サイトを表示することを最優先に対処します。

WordPressから届いたメールによれば、原因は「Count per Day」というプラグインなのだそうです。これを停止すれば問題は解決するのですが、Wordpressの管理画面を表示できないのではプラグインの停止などできません。

レンタルサーバー・ロリポップ側から対処します。

1.ロリポップにログインします。

2.管理画面の[サーバーの管理・設定] ⇒ [ロリポップ!FTP]

3.サイトのフォルダを開き、[wp-content] ⇒ [plugins]と進みます。

ここで、 [plugins]のフォルダ名を変更。[plugins-hold]など名前を変更し[保存する]ボタンをクリック。

サイトを開いてみて、正常に表示されていることを確認。

この状態では、[plugins]フォルダがないので、Wordpress側からプラグインの変更ができない。

[ロリポップ!FTP]画面で、問題のプラグインを停止する。

[plugins]フォルダの中に、問題の[count-per-day]があるので、これをクリックしてフォルダ名を[count-per-day.back]などに変更。

このあとで、[plugins-hold]と変更したものを元の [plugins]に戻す。

これで、Wordpress側で対応できるようになります。プラグインは全て停止状態になっているので、有効にします。

「Count per Day」をどうするかは後で考えることにして、とりあえずの作業は終了です。

サイトの非表示に気づいてから5分で処理が完了しました。

エラーの原因を解消し、「Count per Day」を使えるようにする

 「Count per Day」が使えないと不便なので、使えるようにします。

 「Count per Day」を再インストールして有効化しようとすると次のエラーが出て有効化に失敗します。

重大なエラーを引き起こしたため、プラグインを有効化できませんでした。
Fatal error: Array and string offset access syntax with curly braces is no longer supported in /home/users/0/xxxxxx/web/xxxxxx/wp-content/plugins/count-per-day/counter-core.php on line 1517

 counter-core.phpの1517行目に不具合があるようです。昨日まで使っていたのに今日になって不具合が発生する。その原因は、PHPバージョンだと思われます。 

counter-core.phpの

1517行目: $last = strtolower($val{strlen($val)-1});
の部分を
      $last = strtolower($val[strlen($val)-1]);

 と書き換えて保存します。するとエラーも出ずにプラグインが有効化できました。前のデータも残っていたので、設定をいじる必要もありません。

今回のトラブルの原因

 なんでも保管庫2となんでも保管庫3はほぼ同じ設定になっています。しかし、今回のトラブルは「なんでも保管庫2」でのみ発生しました。

 なんでも保管庫2のみPHPバージョンを7.4(CGI版)から8.1(モジュール版)に変更したことが原因です。

 使用しているPHPバージョンは、ロリポップ管理画面 ⇒ [サーバーの管理・設定] ⇒ [PHP設定]で確認することができます。

 Count per DayはPHP8と互換性がないのが原因のようです。原因も分かり、対処法も分かったので、ひとまず安心しました。