Tips

SiteGuard WP Pluginが有効化できなかった件

SiteGuard WP Pluginをインストールし、有効化する際にどうしてもエラーが出てしまっていたのですが、解決して有効化できました。

以下のようなエラーが発生していました。

Fatal error: Uncaught mysqli_sql_exception: Table 'xxxx.wp_siteguard_login' doesn't exist in /users/xxxx/work/workspace/xxxx/wp-includes/wp-db.php:2056 Stack trace: #0 /users/xxxx/work/workspace/xxxx/wp-includes/wp-db.php(2056): mysqli_query(Object(mysqli), 'DESCRIBE wp_sit...') #1 /users/xxxx/work/workspace/xxxx/wp-includes/wp-db.php(1945): wpdb->_do_query('DESCRIBE wp_sit...') #2 /users/xxxx/work/workspace/xxxx/wp-includes/wp-db.php(2695): wpdb->query('DESCRIBE wp_sit...') #3 /users/xxxx/work/workspace/xxxx/wp-admin/includes/upgrade.php(2749): wpdb->get_results('DESCRIBE wp_sit...') #4 /users/xxxx/work/workspace/xxxx/wp-content/plugins/siteguard/classes/siteguard-admin-filter.php(25): dbDelta(Array) #5 /users/xxxx/work/workspace/xxxx/wp-content/plugins/siteguard/siteguard.php(105): SiteGuard_AdminFilter->init() #6 /users/xxxx/work/workspace/xxxx/wp-includes/class-wp-hook.php(303): siteguard_activate('') #7 /users/xxxx/work/workspace/xxxx/wp-includes/class-wp-hook.php(327): WP_Hook->apply_filters('', Array) #8 /users/xxxx/work/workspace/xxxx/wp-includes/plugin.php(470): WP_Hook->do_action(Array) #9 /users/xxxx/work/workspace/xxxx/wp-admin/plugins.php(193): do_action('activate_sitegu...') #10 {main} thrown in /users/xxxx/work/workspace/xxxx/wp-includes/wp-db.php on line 2056
Fatal error: Uncaught mysqli_sql_exception: Table 'xxxx.wp_siteguard_login' doesn't exist in /users/xxxx/work/workspace/xxxx/wp-includes/wp-db.php:2056
Stack trace:
#0 /users/xxxx/work/workspace/xxxx/wp-includes/wp-db.php(2056): mysqli_query(Object(mysqli), 'DESCRIBE wp_sit...')
#1 /users/xxxx/work/workspace/xxxx/wp-includes/wp-db.php(1945): wpdb->_do_query('DESCRIBE wp_sit...')
#2 /users/xxxx/work/workspace/xxxx/wp-includes/wp-db.php(2695): wpdb->query('DESCRIBE wp_sit...')
#3 /users/xxxx/work/workspace/xxxx/wp-admin/includes/upgrade.php(2749): wpdb->get_results('DESCRIBE wp_sit...')
#4 /users/xxxx/work/workspace/xxxx/wp-content/plugins/siteguard/classes/siteguard-admin-filter.php(25): dbDelta(Array)
#5 /users/xxxx/work/workspace/xxxx/wp-content/plugins/siteguard/siteguard.php(105): SiteGuard_AdminFilter->init()
#6 /users/xxxx/work/workspace/xxxx/wp-includes/class-wp-hook.php(303): siteguard_activate('')
#7 /users/xxxx/work/workspace/xxxx/wp-includes/class-wp-hook.php(327): WP_Hook->apply_filters('', Array)
#8 /users/xxxx/work/workspace/xxxx/wp-includes/plugin.php(470): WP_Hook->do_action(Array)
#9 /users/xxxx/work/workspace/xxxx/wp-admin/plugins.php(193): do_action('activate_sitegu...')
#10 {main}
thrown in /users/xxxx/work/workspace/xxxx/wp-includes/wp-db.php on line 2056

結論から言うと、WordPressのバージョンが古かったことが原因でした。

5.8.7⇒6.3にバージョンアップしたところ、正常に有効化できました。両バージョンをXdebugで見ていたところ、DBへアクセスするコードが大きく変わっているようでした。

ただ、通常、バージョンに対応していない場合は、

このプラグインは現在使用中の WordPress のバージョンでは動作しません。 WordPress を更新してください。

と表示されるはずなんですよね。それは出ませんでした。また、このプラグインの詳細を見ると以下のように3.9以上は対応しているはずなんですけどね。