【wordpress】このサイトで重大なエラーが発生しました。対応手順については、サイト管理者のメール受信ボックスを確認してください。の対応方法【plugins】
2024年2月19日
初めに
プラグインを試していると遭遇した恐怖の画面と、対応方法です。
プラグイン導入後、管理画面に遷移しない
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
治った
ブラウザーのリロードして戻って来れました。
良かった、安心安心。
教訓
- やたらと プラグインは導入しない。
- 導入前にはバックアップを取っておく
- メンテナンされてないプラグインは導入しない。
- パニクらない。
ですね。