プラグインのエラーで特定ページに「重大エラー」が出ていた

wp-spamshield plugin ended Wordpress

≪≪この記事をすべて読むには約 10 分かかります≫≫

当ウェブサイトは、私の備忘録として自分で後で見たい情報を載せている部分も大きいので、時々検索して自分で読むのですが、ふと見たら特定ページで「重大エラー」が出て停止していました。

結果的には、メンテナンスされていないプラグインが原因で起こっていたことがわかり、回復できましたが、プラグインは定期的に見直す必要があるなぁと再認識しました。

重大エラーが特定のページにのみ出現

出先で読みたい記事があり、アクセスしてみたところ、エラーで表示できませんでした。

one of my blogposts were not displayed due to severe error

このサイトで重大なエラーが発生しました。」だそうです。

他のぺージは開ける

別のページは読めましたので、影響されていたのはこの投稿(と他にもあったかもしれません)だけのようです。何か特別なことを書いていたか置いていたページなのかもしれないと思い、ログインしてみてみることにしました。

管理画面は開ける、ログイン状態ならページを開ける

管理画面へのログインや管理画面は壊れていないようで、一安心しました。投稿の編集ページも無事に開けましたが、少なくとも見た目上、特別な内容はなさそうです。

さらに、ログイン状態で記事にアクセスすると普通に表示されました。普段は、いつも投稿をしているパソコンから見るだけなので、いつから発生していたエラーなのかわかりませんが、前からあったのかもしれません。これは、とても怖いです。

基本的にはエスケープされているはずですが、日本語で書かれたテキストはエスケープされずに表示されるとバグることがあるので、そういう系統で生じたエラーでしょうか?

デバッグモード

次に、エラーを探すためにインターネット検索をして当該エラーの原因を探る方法を調べました。

「サイトに重大なエラーがありました。」への対処方法
WordPressサイトで「サイトに重大なエラーがありました。」というエラーが発生してしまいましたか?こちらの記事では、このエラーについて考えられる原因と、素早くトラブルシューティングを実施し、対処する方法をご紹介したいと思います。

LiteSpeed Cacheのパージはやってみましたが、改善しませんでした。「ツール」→「サイトヘルス」からメモリ量を見ましたが、普通なら十分な量のメモリが割り当てられています。

次に、デバッグモードでエラーを探ることにしました。

wp-config.phpの編集

wp-config.phpを編集し、wp-contentディレクトリ内にdebug_logを作成するように設定します。

/**
 * For developers: WordPress debugging mode.
 *
 * Change this to true to enable the display of notices during development.
 * It is strongly recommended that plugin and theme developers use WP_DEBUG
 * in their development environments.
 */
define('WP_DEBUG', false);

/* That's all, stop editing! Happy blogging. */

これをdefine(‘WP-DEBUG’, true);にかえて、他の記載も追加します。(上記サイトを参考にしました)

define( 'WP_DEBUG', true );

define( 'WP_DEBUG_DISPLAY', false );

define( 'WP_DEBUG_LOG', true );

ログにエラーが表示された

変更して、再度アクセスしてみたところ、PHPエラーが出ているのが確認できました。

[14-May-2023 14:03:57 UTC] PHP Fatal error:  Uncaught Error: Call to undefined function create_function() in /tek2tech.com/wp-content/plugins/wp-spamshield/wp-spamshield.php:2033
Stack trace:
#0 /tek2tech.com/wp-includes/class-wp-hook.php(308): rs_wpss_encode_emails()
#1 /tek2tech.com/wp-includes/plugin.php(205): WP_Hook->apply_filters()
#2 /tek2tech.com/wp-includes/blocks/post-content.php(54): apply_filters()
#3 /tek2tech.com/wp-includes/class-wp-block.php(258): render_block_core_post_content()
#4 /tek2tech.com/wp-includes/class-wp-block.php(244): WP_Block->render()
#5 /tek2tech.com/wp-includes/blocks.php(1051): WP_Block->render()
#6 /tek2tech.com/wp-includes/blocks.php(1089): render_block()
#7 /tek2tech.com/wp-includes/block-template.php(240): do_blocks()
#8 /tek2tech.com/wp-includes/template-canvas.php(12): get_the_block_template_html()
#9 /tek2tech.com/wp-includes/template-loader.php(106): include('/tek2tech.com/...')
#10 /tek2tech.com/wp-blog-header.php(19): require_once('/tek2tech.com/...')
#11 /tek2tech.com/index.php(17): require('/tek2tech.com/...')
#12 {main}
  thrown in /tek2tech.com/wp-content/plugins/wp-spamshield/wp-spamshield.php on line 2033

見ていくと、wp-content/plugins/wp-spamshield/wp-spamshield.phpでエラーになっているのがわかります。

プラグイン停止で復活

今回は、プラグインを停止しただけでエラーから回復することができました。ただ、場合によってはインストールしただけで有効化していなくてもエラーを引き起こすこともありますし、脆弱性として残ることになるので使わないプラグインは削除したほうが良いと思います。

WP-spamshield

検索してみると、かなり前に開発が停止してプラグインディレクトリからもダウンロードできないようになっているようです。

wp-spamshield plugin ended

WP-SpamShield
Powerful and user-friendly WordPress anti-spam defense that prevents spam on blog comments, contact forms, registrations, and everything else.

いつから使ってた?

入れた記憶があまりないプラグインでしたが、サイト上を検索すると、当サイトの立ち上げ時にセットで入っていたようです。

コメントスパムを減らすプラグイン、「WP-SpamShield Anti-Spam」
コメントスパムというのがあります。 長いことメンテナンスされていないブログなどを見ると、わけのわからないリンクが付いた、意味がわからないコメントが山のように付いているのを見かけたことがあると思います。あれです。
Wordpressのプラグインを見直してみる(2017年8月)
当ブログを書き始めてから2年近く経ちます。最初の一年、少しずつプラグインで機能をつぎ足しながら記事を書きましたが、ここ1年はアップデートがほとんどで新しく試したプラグインはAMP(Googleのモバイルサイト高速化)くらいです。 Word...
Wordpressのスパムシールド
いつだったか、インストールして以来そのまま忘れていたプラグインのWP-SpamShieldというものがあるのですが、最近、サーバーのファイル数制限に結構近くなってきたこと、LiteSpeed Cacheを入れてみようと思ったら、何となく調子...

2017年にプラグインを見直した時には、まだアップデートされていたのですが、その直後から更新停止になっています・・・。

エラーは1か月前から。PHP 8.x非互換?

WordPressのデバッグログ以外に、サーバーログを確認したところ、2023年4月7日からエラーが出始めています。

当サイトの更新記録を見ると、PHP 7.4のサポートが終了しているのに気づいてPHP 8.x系を試した時に出ているので、PHP 8.xに非対応だったようです。

知らぬ間にPHP 7.4系のサポートが終了していた
このブログはちょこちょこと更新しているのですが、知らない間にPHP 7.4のサポートが終了していました。Wordpressを触っているだけだったので、気づかなかったです。

プラグインインストールが単純で操作しやすく、自動アップデートも簡単に設定できるWordPressは便利ですが、すぐにエラーが出るDrupalや、メジャーバージョンアップで後方互換性がなくなるJoomlaと違って、いつまでもプラグインを見直さないというリスクがあるということに改めて気づかされました。

 

コメント

タイトルとURLをコピーしました