【wordpress】このサイトで重大なエラーが発生しました。対応手順については、サイト管理者のメール受信ボックスを確認してください。の対応方法【plugins】

初めに

プラグインを試していると遭遇した恐怖の画面と、対応方法です。

プラグイン導入後、管理画面に遷移しない

Nostr に自動投稿するプラグインを探していて、某プラグインを導入後、管理画面に遷移できなくなりました。

この表示から管理画面の操作が不能になります。初体験です。

プラグインを削除したくとも、管理画面までたどり着けません。

トラブルシューティング を見たところ、FTP で php ファイルを書き換える。とのことですが、
Dockerのコンテナなので FTP 接続はできません。
Docker コマンドでなんとかします。

Docker から plugin を削除してみる

しょうがないので、ターミナルからコンテナに潜ってプラグインを削除します。

$ docker exec -t <コンテナ名> bash
// とりあえず一覧を見てみる
# ls

ls でリストを確認しようとしましたが、操作が戻ってきません。
結構焦りました。

ブログは表示されるので、動いて入るようです。

ログを見てみます。

$ docker logs -f <コンテナ名>
...
122.249.122.17 - - [19/Feb/2024:18:19:00 +0900] "GET /wp-admin/admin.php?page=stats&noheader&proxy&chart=admin-bar-hours-scale HTTP/1.1" 200 703 "https://blog.nekoteam.com/archives/3075" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/121.0.0.0 Safari/537.36"
[Mon Feb 19 18:19:08.238965 2024] [php:error] [pid 275] [client 122.249.122.17:0] PHP Fatal error:  Uncaught TypeError: call_user_func_array(): Argument #1 ($callback) must be a valid callback, array callback must have exactly two members in /var/www/html/wp-includes/class-wp-hook.php:324\nStack trace:\n#0 /var/www/html/wp-includes/class-wp-hook.php(348): WP_Hook->apply_filters(NULL, Array)\n#1 /var/www/html/wp-includes/plugin.php(517): WP_Hook->do_action(Array)\n#2 /var/www/html/wp-admin/admin-header.php(303): do_action('admin_notices')\n#3 /var/www/html/wp-admin/plugin-editor.php(163): require_once('/var/www/html/w...')\n#4 {main}\n  thrown in /var/www/html/wp-includes/class-wp-hook.php on line 324, referer: https://blog.nekoteam.com/wp-admin/plugin-editor.php
...

コンテナは動いていますが、php:error が出ています。

とりあえずコンテナを再起動してみるが、

$docker-compose restart

変化なし。震えました。

bash でコンテナ内で操作できないので、ホストから削除を試みます。

// まず一覧確認
$ docker exec -t <コンテナ名> ls
index.php   readme.html  wp-admin         wp-comments-post.php  wp-config-sample.php  wp-content     wp-includes  wp-load.php        wp-mail.php   wp-signup.php   xmlrpc.php
index.html  license.txt  wp-activate.php  wp-blog-header.php    wp-config-docker.php  wp-config.php  wp-cron.php  wp-links-opml.php  wp-login.php  wp-settings.php  wp-trackback.php

// wp-content の中確認
$ docker exec -t <コンテナ名> ls ./wp-content
advanced-cache.php  ai1wm-backups  cache  fonts  index.php  jetpack-waf  languages  plugins  themes  upgrade  upgrade-temp-backup  uploads  w3tc-config  wp-cache-config.php

// plugins の中確認
$ docker exec -t <コンテナ名> ls ./wp-content/plugins
bluesky-post            google-site-kit          index.php  jetpack-boost    limit-login-attempts-reloaded  simple-social-icons  wp-super-cache
easy-table-of-contents  highlighting-code-block  jetpack    jetpack-protect  nostrtium                      tinymce-advanced     wpcat2tag-importer

いた nostrtium です。
ディレクトリごと削除します。

$ docker exec -t <コンテナ名> rm -rf ./wp-content/plugins/nostrtium

治った

ブラウザーのリロードして戻って来れました。

良かった、安心安心。

教訓

  • やたらと プラグインは導入しない。
  • 導入前にはバックアップを取っておく
  • メンテナンされてないプラグインは導入しない。
  • パニクらない。

ですね。