FatalErrorで操作不能になったWPのダッシュボードを正常に戻した方法

「WordPressのダッシュボードにFatal errorが表示されて操作できなくなったんだけど、どうしたら元に戻せるの?」

エラーの内容にもよりますが、私の場合は以下のような手順で元に戻しました。

  1. エラー原因の特定。
  2. エラー原因となっているプログラムを削除してみる。
  3. ダッシュボードが操作可能になったのでプラグインを更新。
  4. エラーが表示されなくなったので削除したプログラムを元通りにする。

エラーの原因となっているプログラムを削除する場合は、念のためにサイトを構成しているファイルをバックアップしておいたほうが良いでしょう。
私はバックアップが面倒だったのでこの手順を飛ばしましたが、もしサイトが真っ白になった時に復元できる自信がない人はバックアップを取っておくことを強く推奨します。

エラー原因の特定

まずはエラーの原因を特定しましょう。
私の場合は下記のようなエラー内容が表示されていました。

PikoPikoBlogのダッシュボードに表示されていたエラーの内容
Fatal error: Uncaught InvalidArgumentException: Cannot locate the template /home/poppink/pikopiko.blog/public_html/wp-content/plugins/backwpup/views/notice/notice.php in template function. in /home/poppink/pikopiko.blog/public_html/wp-content/plugins/backwpup/inc/functions.php:27 Stack trace: #0 /home/poppink/pikopiko.blog/public_html/wp-content/plugins/backwpup/inc/Notice/NoticeView.php(47): backwpup_template(Object(Inpsyde\BackWPup\Notice\NoticeMessage), ‘/notice/notice….’) #1 /home/poppink/pikopiko.blog/public_html/wp-content/plugins/backwpup/inc/Notice/NoticeView.php(104): Inpsyde\BackWPup\Notice\NoticeView->notice(Object(Inpsyde\BackWPup\Notice\NoticeMessage), NULL, ‘notice-warning’) #2 /home/poppink/pikopiko.blog/public_html/wp-content/plugins/backwpup/inc/Notice/DropboxNotice.php(29): Inpsyde\BackWPup\Notice\NoticeView->__call(‘warning’, Array) #3 /home/poppink/pikopiko.blog/public_html/wp-content/plugins/backwpup/inc/Notice/Notice.php(112): Inpsyde\BackWPup\Notice\DropboxNotice->render(Object(Inpsyde\BackWPup\Notice\NoticeMessage)) #4 /home/poppink/pikopiko.blog/public_html/wp-includes/class-wp-hook.php(303): Inpsyde\BackWPup\No in /home/poppink/pikopiko.blog/public_html/wp-content/plugins/backwpup/inc/functions.php on line 27

エラー内容にざっと目を通してみると、どうやら今回の場合はBackWPupというプラグインが原因になっているようです。
Fatal errorが発生していた時はダッシュボード上のどのリンク先に行っても同じエラーメッセージが表示されていました。

おそらくBackWPupというプラグインを停止もしくは削除すれば問題は解消されるのだと思います。
しかしそれでは根本的な解決にはならないので、エラーメッセージの最後のほうに記載されていた「/plugins/backwpup/inc/functions.php」というファイルを開いてみました。

エラー原因となっているプログラムを削除

FTPソフトでBackWPupのfunctions.phpを開くと下記のようなソースコードが表示されました。

前述のエラーメッセージに「functions.php on line 27」と表示されていたので、関係がありそうな26から33のソースコードを削除しました。

ダッシュボードが操作可能になったのでプラグインを更新

ダッシュボードを更新するとFatal errorがWarningに変わってダッシュボードの操作が可能になりました。

今回のエラーの元凶であるBackWPupのメニューを調べてみると、バックアップの保存先として設定していたDropboxの認証がされていないことがエラー原因であることがわかりました。
BackWPupをインストールしたときにDropboxの認証は済ませたはずなのですが、Dropboxの仕様で長期間有効なアクセストークンが廃止されたようです。

ということは今後も定期的なエラーが発生するのでしょうか。
Fatal errorになってダッシュボードが操作不能になるのはできるだけ避けたいですが、セキュリティ上仕方のない事として受け入れるしかなさそうです。

とにかく今はBackWPupを使えるようにするためにDropboxの認証コードを取得⇒コピペ⇒変更を保存⇒再接続しました。
複数のジョブがある場合はそれぞれで認証コードを取得する必要があります。

エラーが表示されなくなったので削除したプログラムを元通りに

Dropboxの認証コードを取得して再接続が完了したらエラーメッセージが表示されなくなりました。
そこで、先ほど削除した「/plugins/backwpup/inc/functions.php」の26から33のソースコードを元に戻してアップロードしました。

これで今回のFatal errorは完全に解決です。

WordPressのダッシュボードにエラーが発生していることを知る方法って何があるの?

エラー発生を知る主な方法は以下の2つです。

  • ダッシュボードに表示されるメッセージ
  • Webサイト宛てのメール

私の場合はダッシュボードに表示されていたメッセージからエラーの発生を知りました。
メッセージにはいくつか種類があるようで、致命的なエラーであるFatal errorの場合と、下記のような改善してね的なメッセージの場合があります。

改善してね的なメッセージ(英文)

You have one or more BackWPup jobs that need to reauthenticate with Dropbox.

The Dropbox API is discontinuing long-lived access tokens. To conform to these new changes, we must implement the use of refresh tokens, which can only be fetched when you reauthenticate.

Please visit each job below and reauthenticate your Dropbox connection.

改善してね的なメッセージ(日本語訳)

Dropboxで再認証する必要のあるBackWPupジョブが1つ以上あります。

Dropbox APIは、長期間有効なアクセストークンを廃止しています。これらの新しい変更に準拠するには、再認証時にのみフェッチできる更新トークンの使用を実装する必要があります。

以下の各ジョブにアクセスして、Dropbox接続を再認証してください。

Webサイト宛てに届くメールには「サイトで技術的な問題が発生しています」というタイトルが入っていました。
このメールが届いたサイトのダッシュボードを開いてみると何の操作もできなくなっていたので少し焦りました(汗)。

メールに記載されているリカバリーモードって何?

これはダッシュボードで操作ができなくなったときでもプラグインの停止や削除が可能になる機能の事です。
リカバリーモードを利用するには、「サイトで技術的な問題が発生しています」というメールに記載されているリンクからアクセスします。

エラーが発生している原因がプラグインやテーマであれば、リカバリーモードで一旦停止にすることで一時的に解決する可能性大です。
根本的な解決が必要な場合は、問題になっているプラグインやテーマの有効化をして原因究明を進めていきましょう。

プラグインって使わないほうが良いの?

使わなくて済むなら使わない方が良いです。
更新されていないプラグインは色々なエラーの引き金になりますし、更新されていたとしても複雑なプログラムで構成されているプラグインの場合はGoogleからマイナス評価の対象になりやすいような気がします。

でも、プラグインを使わないことを徹底してしまうと今度は面倒な作業が沢山増えます。
特に今回のようなバックアップシステムは、一から作ると本当に面倒臭いです。

プラグインは手抜きをするためには非常に有意義なツールです。
多少のエラーを受け入れる気持ちになれれば楽ができます。


はい、ということで、WordPressのダッシュボードにFatal errorが表示されて操作できなくなっても慌てずに解決していきましょう。
エラーの内容にもよりますが、私の場合は以下のような手順で元に戻すことができました。

  1. エラー原因の特定。
  2. エラー原因となっているプログラムを削除してみる。
  3. ダッシュボードが操作可能になったのでプラグインを更新。
  4. エラーが表示されなくなったので削除したプログラムを元通りにする。

リカバリーモードを使える場合はリカバリーモードでログインした後にエラー原因となっているプラグインやテーマを停止・削除するのも一つの手です。

以上「FatalErrorで操作不能になったWPのダッシュボードを正常に戻した方法」でした。