WordPressのエラー対応

WordPressパソコン自宅サーバ

WordPressではエラーが発生しても、画面上にエラーメッセージが表示されません。

エラーが発生するとWebサーバのエラーログに書き込まれます。

定期的にエラーログをチェックして、気になるエラーがあったら、原因を調べて対処します。

ここでは、今まで対処したエラーについて書き残しておきます。

PHP Warning: A non-numeric value encountered

エラー内容

error.logに以下のメッセージが大量に出て、他のメッセージが埋もれてしまう。

[Tue Oct 01 03:20:03.048266 2019] [php7:warn] [pid 15542] [client fd40:bbc4:8e86::4:48842] PHP Warning: A non-numeric value encountered in /var/www/wordpress/wp-includes/SimplePie/Parse/Date.php on line 694

原因

WordPressが使用しているSimplePie1.3.1のバグ。
最新のSimplePieでは直っているが、なぜだかWordPressに反映されないため。

対処

手作業でパッチを当てても、WordPressを更新するともとに戻ってしまうため、以下のプラグインを導入する。

Fix – SimplePie Errors
https://github.com/michaeluno/_fix-simplepie-errors

WordPress データベースエラー: Table ‘wordpress.wp__blc_instances’ doesn’t exist

エラー内容

error.logに以下のメッセージが出る。

[Mon Dec 23 00:59:58.167941 2019] [php7:notice] [pid 17904] [client 2001:2c0:cd03:ca01::4:48768] WordPress データベースエラー: Table 'wordpress.wp__blc_instances' doesn't exist for query SELECT instance_id FROM wp__blc_instances WHERE container_id = 24170 AND container_type = 'post' made by do_action_ref_array('wp_scheduled_auto_draft_delete'), WP_Hook->do_action, WP_Hook->apply_filters, wp_delete_auto_drafts, wp_delete_post, do_action('delete_post'), WP_Hook->do_action, WP_Hook->apply_filters, blcPostTypeOverlord->post_deleted, referer: https://blog.zeke.jp/wp-cron.php?doing_wp_cron=1577030393.0625751018524169921875

原因

プラグイン Broken Link Checkerのバグ。
一度対処したけど、11月8日の1.11.9アップデートで戻っちゃったみたい。

2020年1月4日追記:Ver.1.11.10にて修正されました!今後対処は不要です。

対処

WordPressインストールディレクトリ/wp-content/plugins/broken-link-checker/includes/any-post.php
の138,152,159行目の

$wpdb->prefix.’_blc_instances`

$wpdb->prefix.’blc_instances`

に変更する。

参考:https://github.com/HongPong/broken-link-checker/issues/36

PHP Fatal error: Uncaught Error: Call to undefined method SearchRegex

※追記 この項目はSearchRegex 1.4.16のときのものです。2020年5月9日にSearchRegexがバージョンアップして2.0になりました!でもちゃんと動いてくれない。

エラー内容

error.logに以下メッセージが出る。メールでも通知される。

[Sat Dec 21 11:23:44.307486 2019] [php7:error] [pid 24575] [client 2001:2c0:cd03:ca01:a14e:1cf1:d07f:39ed:54337] PHP Fatal error: Uncaught Error: Call to undefined method SearchRegex::base_url() in /var/www/wordpress/wp-content/plugins/search-regex/view/results.php:26\nStack trace:\n#0 /var/www/wordpress/wp-content/plugins/search-regex/search-regex.php(130): include()\n#1 /var/www/wordpress/wp-content/plugins/search-regex/search-regex.php(116): SearchRegex->render('results', Array)\n#2 /var/www/wordpress/wp-includes/class-wp-hook.php(288): SearchRegex->admin_screen('')\n#3 /var/www/wordpress/wp-includes/class-wp-hook.php(312): WP_Hook->apply_filters('', Array)\n#4 /var/www/wordpress/wp-includes/plugin.php(478): WP_Hook->do_action(Array)\n#5 /var/www/wordpress/wp-admin/admin.php(254): do_action('tools_page_sear…')\n#6 /var/www/wordpress/wp-admin/tools.php(22): require_once('/var/www/wordpr…')\n#7 {main}\n thrown in /var/www/wordpress/wp-content/plugins/search-regex/view/results.php on line 26, referer: https://blog.zeke.jp/wp-admin/tools.php?page=search-regex.php

原因

プラグイン Search Regexが最新のwordPressに対応していないため。

対処

古いプラグインで、アップデートも期待できないため
WordPressインストールディレクトリ/wp-content/plugins/search-regex/view/results.php
の26行目の

<?php echo plugins_url( '/images/small.gif', $this->base_url() ); ?>

<?php echo plugins_url( '/images/small.gif', dirname( __FILE__ ) ); ?>

に変更する。

※search.phpの最終行と同じようにdirnameをつけないと、いけないようです。

参考:https://wordpress.org/support/topic/your-site-is-experiencing-a-technical-issue-5/

PHP Warning: preg_replace(): No ending delimiter

エラー内容

error.logに以下メッセージがたくさん出る。操作画面でもエラーが出て継続できない。

[Sat May 09 06:37:03.795397 2020] [php7:warn] [pid 16032] [client 2001:2c0:cd03:ca00:d19:b534:dfdf:bbc6:49459] PHP Warning: preg_replace(): No ending delimiter '@' found in /var/www/wordpress/wp-content/plugins/search-regex/models/replace.php on line 161, referer: https://blog.zeke.jp/wp-admin/tools.php?page=search-regex.php

原因

2020年5月9日にバージョンアップしたSearch Regex 2.0のバグ?

原因及び対処を調査中!

※2020年5月11日追記 2.0.1にバージョンアップしたら、エラーは出なくなりました。

対処

とりあえず、バックアップから古いバージョンのSearch Regexプラグインに戻しました。

今後、エラーが増えたら、このページを更新していきます。

コメント