5年ほど特に問題もなくアップデートを続けつつ利用してきたWordPressだが、突然? 編集画面に入ろうとするとエラーが発生するようになった。これについて対処していく。 方針は、原因調査、対処、再発防止策絵検討と進める。
発生しているエラーは次です。 一部伏字化しています。
Fatal error: Uncaught Error: Class "YopPoll\Admin\Deactivation_Feedback" not found in /home/XXXX/YYY/public_html/info/wp-content/plugins/yop-poll/includes/class-plugin.php:42 Stack trace: #0 /home/XXXX/YYY/public_html/info/wp-content/plugins/yop-poll/includes/class-plugin.php(20): YopPoll\Plugin->init_hooks() #1 /home/XXXX/YYY/public_html/info/wp-content/plugins/yop-poll/includes/class-plugin.php(14): YopPoll\Plugin->__construct() #2 /homeXXXX/YYY/public_html/info/wp-content/plugins/yop-poll/yop_poll.php(80): YopPoll\Plugin::instance() #3 /home/XXXX/YYY/public_html/info/wp-includes/class-wp-hook.php(341): {closure}('') #4 /homeXXXX/YYY/public_html/info/wp-includes/class-wp-hook.php(365): WP_Hook->apply_filters(NULL, Array) #5 /home/XXXX/YYY/public_html/info/wp-includes/plugin.php(522): WP_Hook->do_action(Array) #6 /home/XXXX/YYY/public_html/info/wp-settings.php(622): do_action('plugins_loaded') #7 /home/XXXX/YYY/public_html/info/wp-config.php(94): require_once('/home/XXXX/YYY...') #8 /home/XXXX/YYY/public_html/info/wp-load.php(50): require_once('/home/XXXX/YYY...') #9 /home/XXXX/YYY/public_html/info/wp-admin/admin.php(35): require_once('/home/XXXX/YYY...') #10 /home/XXXX/YYY/public_html/info/wp-admin/about.php(10): require_once('/home/XXXX/YYY...') #11 {main} thrown in /home/XXXX/YYY/public_html/info/wp-content/plugins/yop-poll/includes/class-plugin.php on line 42
この Web サイトに重大なエラーが発生しました。サイト管理者のメール受信箱で手順を確認してください。問題が解決しない場合は、サポートフォーラム をお試しください。
WordPress のトラブルシューティングについてはこちらをご覧ください。
原因の検討
エラー内容を見ると、「Fatal error: Uncaught Error: Class “YopPoll\Admin\Deactivation_Feedback” not found 」とでている。 このプラグイン(plugins/yop-poll)があやしい。 プラグインの自動アップデートに失敗してと推測される。”not found”と言われているので、まずは、このファイルがあるかをチェックする。
原因調査方法について
SSHでログインして対象のファイルなどを確認する
$ ls -ltra wp-content/plugins/yop-poll/includes/Admin/
合計 148
-rw-r--r-- 1 XXXX XXXX 915 7月 30 01:23 class-admin-page-add-new.php
-rw-r--r-- 1 XXXX XXXX 15219 7月 30 01:23 class-guide.php
-rw-r--r-- 1 XXXX XXXX 5842 7月 30 01:23 class-admin.php
-rw-r--r-- 1 XXXX XXXX 33577 7月 30 01:23 class-admin-page-votes.php
-rw-r--r-- 1 XXXX XXXX 228 7月 30 01:23 class-admin-page-upgrade-to-pro.php
-rw-r--r-- 1 XXXX XXXX 259 7月 30 01:23 class-admin-page-settings.php
-rw-r--r-- 1 XXXX XXXX 1807 7月 30 01:23 class-admin-page-results.php
-rw-r--r-- 1 XXXX XXXX 25307 7月 30 01:23 class-admin-page-polls.php
-rw-r--r-- 1 XXXX XXXX 15001 7月 30 01:23 class-admin-page-logs.php
-rw-r--r-- 1 XXXX XXXX 18534 7月 30 01:23 class-admin-page-bans.php
drwxr-xr-x 2 XXXX XXXX 4096 7月 30 01:23 .
drwxr-xr-x 12 XXXX XXXX 4096 7月 30 01:23 ..
おえ「class-deactivation-feedback.php」はないですね。 これが原因かも
$ find wp-content/plugins/yop-poll -iname "*deactivation*"
$ nl -ba wp-content/plugins/yop-poll/includes/class-plugin.php | sed -n '30,55p'
30 // REST API.
31 add_action( 'rest_api_init', array( $this, 'register_rest_routes' ) );
32 add_filter( 'rest_post_dispatch', array( $this, 'set_rest_nocache_headers' ), 10, 3 );
33
34 // Admin.
35 if ( is_admin() ) {
36 $admin = new Admin\Admin();
37 $admin->init();
38
39 $guide = new Admin\Guide();
40 $guide->init();
41
42 $deactivation_feedback = new Admin\Deactivation_Feedback();
43 $deactivation_feedback->init();
44 }
45
46 // Frontend.
47 $frontend = new Frontend\Frontend();
48 $frontend->init();
49
50 // Assets.
51 $assets = new Assets();
52 $assets->init();
53
54 // Cron-based auto-reset.
55 $auto_reset = new Cron\Cron_Auto_Reset();
$ grep -R “Deactivation_Feedback” wp-content/plugins/yop-poll
wp-content/plugins/yop-poll/includes/class-plugin.php: $deactivation_feedback = new Admin\Deactivation_Feedback();
うーーん これは配布物件の制作ミス? ですか? それでは
暫定回避方法(編集画面をすぐ復旧したい場合)
一時的な対処として、
$deactivation_feedback = new Admin\Deactivation_Feedback();
$deactivation_feedback->init();の2行をコメントアウトしてみる
参考情報です
$ grep “Version:” wp-content/plugins/yop-poll/yop_poll.php
Version: 7.0.8
$ grep “Stable tag” wp-content/plugins/yop-poll/readme.txt
Stable tag: 7.0.8
$ grep -R “spl_autoload|autoload|require_once|include_once” \
wp-content/plugins/yop-poll/includes
wp-content/plugins/yop-poll/includes/Admin/class-admin-page-bans.php: require_once ABSPATH . ‘wp-admin/includes/class-wp-list-table.php’;
wp-content/plugins/yop-poll/includes/Admin/class-admin-page-logs.php: require_once ABSPATH . ‘wp-admin/includes/class-wp-list-table.php’;
wp-content/plugins/yop-poll/includes/Admin/class-admin-page-polls.php: require_once ABSPATH . ‘wp-admin/includes/class-wp-list-table.php’;
wp-content/plugins/yop-poll/includes/Database/class-schema.php: require_once ABSPATH . ‘wp-admin/includes/upgrade.php’;
$ vi wp-content/plugins/yop-poll/includes/class-plugin.php で編集してコメントアウトしてみる
結果
上の2行のコメントアウトで、編集画面(管理者画面)は復旧しました