WordPressのテーマを更新したところブログにアクセスできなくなった。

7/14夕方5時頃に当ブログのWordPressのテーマを更新したところWordPressの管理画面の上に「サイトで技術的な問題が発生しています。サイト管理者のメールを確認して指示に従ってください。」というメッセージを表示をして、その後サイトにアクセスできなくなりました。

[届いたメールの内容]

こんにちは!

WordPress 5.2から、サイトでプラグインやテーマが致命的なエラーを発生させた場合にそれを検知してこの自動メールでお知らせする機能が追加されました。

今回の場合、WordPress がテーマ Cocoon でエラーを捉えました。

まずはじめに、ご自分のサイト (https://blog.it-see.xyz/myblog/) を開き、表示上の問題がないか確認してください。次に、エラーが発生したページ (https:///wp-admin/update-core.php) を開き、表示上の問題がないか確認してください。

この問題をさらに調査するにはサーバーホストに連絡してみてください。

もしサイトが壊れていてダッシュボードに正常に接続できない場合、WordPress には特別なリカバリーモードがあります。これによりダッシュボードに安全にログインし、さらに調査をすることができます。

https://*********************************************

サイトを安全に保つため、このリンクは 1日 で有効期限が切れます。とはいえご心配なく。有効期限後でもこのエラーが再度発生すれば新しいリンクが送られてきます。



エラー詳細
==========
 エラータイプ E_ERROR が /usr/local/web/***/wp-content/themes/cocoon-master/lib/block-editor-styles-paragraph.php ファイルの 13 行目で発生しました。 エラーメッセージ: Uncaught Error: Call to undefined function register_block_style() in /usr/local/******/wp-content/themes/cocoon-master/lib/block-editor-styles-paragraph.php:13
Stack trace:
#0 /usr/local/***/wp-content/themes/cocoon-master/lib/_imports.php(123): require_once()
#1 /usr/local/***/wp-content/themes/cocoon-master/lib/_defins.php(363): require_once('/usr/local/*****/…')
#2 /usr/local/***/wp-content/themes/cocoon-master/functions.php(15): require_once('/usr/local/***/…')
#3 /usr/local/******/wp-settings.php(499): include('/usr/local/***/…')
#4 /usr/local/******/wp-config.php(93): require_once('/usr/local/***/…')
#5 /usr/local/******/wp-load.php(37): require_once('/usr/local/***/…')
#6 /usr/local/******/wp-admin/admin.php(34): require_once('/usr/local/***/…')
#7 /usr/local/***

このエラーの復旧に6時間ぐらいかかりました。

最終的に以前採取していたバックアップからWordPressを復元して復旧させました。その際に、ブラウザのキャッシュ・クッキーをクリアしないとエラー表示は消えませんでした。

テーマの更新に失敗した原因は、WordPressとCocoonの版数の組み合わせにより発生したものと思われる。今週末にアップデート予定。

今後の為にその時の状況と調べた結果をメモしておきます。

[環境]
OS : FreeBSD 11.3
WordPress : 5.2.7
テーマ : Cocoon 1.9.9.5.3

1.9.9.5.3⇒2.2.0.5に上げようとした。

[やったこと]
・F5キーで再表示⇒NG
・ブラウザの「戻る」ボタンで戻って別のメニューをクリックしてみる。⇒NG
・ブラウザを終了して再度アクセスしてみる⇒NG
・メールの指示通りリカバリモードでアクセスしてみる。⇒NG
・ログを確認
・ネットで検索して原因を調べた。
・バックアップから戻した。
・今週末にアップデート予定だ。

[ログの内容]
httpd-error.logにも同じようなメッセージが記録されていた。

[Tue Jul 14 17:02:28.620981 2020] [php7:error] [pid 96535] [client xx.xx.xx.xxx:yyyyy] PHP Fatal error: Uncaught Error: Call to undefined function register_block_style() in /usr/local/*******/wp-content/themes/cocoon-master/lib/block-editor-styles-paragraph.php:13\nStack trace:\n#0 /usr/local/******/wp-content/themes/cocoon-master/lib/_imports.php(123): require_once()\n#1 /usr/local/******/wp-content/themes/cocoon-master/lib/_defins.php(363): require_once(‘/usr/local/***/…’)\n#2 /usr/local/******/wp-content/themes/cocoon-master/functions.php(15): require_once(‘/usr/local/***/…’)\n#3 /usr/local/******/wp-settings.php(499): include(‘/usr/local/***/…’)\n#4 /usr/local/******/wp-config.php(93): require_once(‘/usr/local/***/…’)\n#5 /usr/local/******/wp-load.php(37): require_once(‘/usr/local/***/…’)\n#6 /usr/local/******/wp-admin/admin.php(34): require_once(‘/usr/local/***/…’)\n#7 /usr/local// in /usr/local/******/wp-content/themes/cocoon-master/lib/block-editor-styles-paragraph.php on line 13, referer: https://*******/wp-admin/update-core.php?action=do-theme-upgrade

[Tue Jul 14 17:15:59.421961 2020] [php7:error] [pid 96606] [client xx.xx.xx.xxx:yyyyy] PHP Fatal error: Uncaught Error: Call to undefined function ctype_digit() in /usr/local//wp-includes/class-wp-recovery-mode-cookie-service.php:82\nStack trace:\n#0 /usr/local//wp-includes/class-wp-recovery-mode.php(270): WP_Recovery_Mode_Cookie_Service->validate_cookie()\n#1 /usr/local//wp-includes/class-wp-recovery-mode.php(110): WP_Recovery_Mode->handle_cookie()\n#2 /usr/local//wp-settings.php(356): WP_Recovery_Mode->initialize()\n#3 /usr/local//wp-config.php(93): require_once(‘/usr/local//…’)\n#4 /usr/local//wp-load.php(37): require_once(‘/usr/local//…’)\n#5 /usr/local//wp-login.php(12): require(‘/usr/local//…’)\n#6 {main}\n thrown in /usr/local/**/wp-includes/class-wp-recovery-mode-cookie-service.php on line 82

[エラーメッセージの意味]

Uncaught Error
「エラー対応していない」、「捕らえられないエラー」という意味。

Call to undefined function register_block_style()
Call to undefined function ctype_digit()
定義されていない関数を呼び出したという意味。今回の場合は、「register_block_style()」と「ctype_digit()」という関数。

「register_block_style()」はブロックにスタイルを追加する関数。ネットで検索すると、WordPress5.3.0以降で対応している模様。

Cocoonの公式サイトを確認すると、推奨環境はWordPress5.3.0以上になっていた。Cocoon2.0.0辺りからWordPress5.3.0以上に変更されている模様。

WordPressのアップデートをすれば解決する事はわかったが、WordPressの管理画面にログインできないので以前採取したバックアップから戻してWordPressを復旧させる事にしました。

[その時の手順]
この方法は管理者権限(Root)が使える環境しか使えません。

1.WordPressをインストールしているディレクトリをリネーム。

例.

# mv htdocs _htdocs

2.バックアップから戻す。

例.復元ポイントまで移動してからtarコマンドで復元する。

# cd /usr/local
# tar Jxf xxxxxx.com_yyyy-mm-dd.tar.xz

エラーメッセージを消すにはブラウザーのキャッシュとCookieのクリアが必要だった。どうやらブラウザー側で状態を保持しているようで、サーバー側のファイルとしては復元しているのにサイトにアクセスした際に表示されたエラーメッセージが消えなかった。

※_htdocsは不要なのでアップデートが完了して問題ない事が確認できたら最終的に削除する。

[参考]

【圧縮時】

# cd /usr/local/www
# tar Jcf htdocs_yyyy-mm-dd.tar.xz htdocs

【展開時】

# cd /usr/local/www
# tar Jxf htdocs_yyyy-mm-dd.tar.xz

オプションの意味
J : xz形式で圧縮する。
c : tarファイルの新規作成。
x : tarファイルの展開。
f : tarファイルの指定。

VPS(Virtual Private Server)ではなく一般的なレンタルサーバーでWordPressを使用している場合、 「BackWPup」 などのプラグインを 使って以下のような方法で復元することになると思われます。

1.プラグインを使ってバックアップ。
2.バックアップファイル(xxxx.zip)をFTPを使ってPCにダウンロード。
3.復元時は、PC側でZIPファイルを解凍。
4.解凍したファイルをFTPでアップロードして上書きする。

コメント

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