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プラグインに戻しました。
今後、エラーが増えたら、このページを更新していきます。
コメント