先日 WordPress でのプラグイン更新に失敗し、 ブログが一切操作不可能 な状態に陥ってしまいましたため、原因や行った対処についてまとめます。

これは久しぶりにやってしまいましたねー。

障害概要

WordPress 上でプラグイン更新を実行したところ、PHP Fatalエラーが発生し、ブログ・管理ツールともに一切機能しない状態に陥る。

発生日時

2017年8月8日 6時10分 - 6時25分 まで 約15分間

障害内容

PHP Fatal エラーが表示されて、ブログが一切機能しない状態に陥る。


WordPress はPHPで実装されています。
PHP はまずいプログラムがあると処理を中断し「エラーメッセージを表示した真っ白画面」を表示します。

PHP Fatal エラーが発生した真っ白な画面
PHP Fatal エラーが発生した真っ白な画面

これはエラー発生箇所、内容を教えてくれるものなのですが、この画面になってしまうと WordPress の一切が利用できなくなってしまい、 完全な詰み状態 となってしまうのですね。
(そもそも、この画面が公開中のブログに出てしまうことがNGです。)

ブログカスタマイズで「 何か変更するならバックアップをとりましょう 」と言われるのは、この真っ白画面から復旧できなくなってしまうことを回避するためです。


今回はプラグイン画面でインストール済みのプラグインを更新しただけだったので、まさか障害になるとは思っておらず完全に油断していました。
プラグインといえども 稼働中のプログラム群に手を入れる という点は、他のカスタマイズと変わらず「リスクを伴う」ということを思い知りました。。。

発生原因

更新を行ったプラグインに、Fatal エラーが発生するコードが含まれていたため。


エラーメッセージは次を表示。

Fatal error: Cannot make static method AMP_Customizer_Design_Settings::register_customizer_ui() non static in class AMPFORWP_Customizer_Design_Contols in /path/to/wordpress/wp-content/plugins/accelerated-mobile-pages/templates/customizer/customizer.php on line 0

対応方法

エラー発生箇所のコードを直接修正してアップロード。

対象プラグイン

Accelerated Mobile Pages

対象バージョン

0.9.57.3 (?)

対象ファイル

/path/to/wordpress/wp-content/plugins/accelerated-mobile-pages/templates/customizer/customizer.php

今回は WordPress が機能せず管理ツールからの更新できないため、サーバにログインして直接編集するしかありませんでした。

WinSCP(Win)FileZilla(Mac)などのFTPソフトでサーバに接続し、エラーが出ているファイルを探して修正してあげる必要があります。
このような「サーバ接続して作業する」という経験がない方には、正直 難易度が高い作業だと思います。

修正内容

修正前

44行目: public function register_customizer_ui( $wp_customize ) {

修正後

44行目: public static function register_customizer_ui( $wp_customize ) {

エラーの内容は、、、うーん、単なるstaticのつけ忘れですねー。

「static とは何か」についてはここでは言及しません。
要するに文法違反ということです。

PHP は static 宣言していない関数を static 呼び出しできる というおっかない実装が可能だったり、static の扱いがゆるいのですが他の言語ではあり得ないことですね。
(ここはようやく対処が進んでいるようです。)

対策

開発環境、ステージ環境など構築して、事前に動作確認を行い、その後に公開環境に適用するルールとする。


複数環境を構築して、事前に複数回の動作確認を取ることができるよう体制と整えることは当たり前ですが、個人で運営している小さなブログであれば、正直コストに見合わないと感じます。

Localhost に、プラグインやテーマ適用をチェックするための用途で環境を用意するか、「このようなエラーが起きた時に、迅速に対処できれば OK」と割り切ってしまうか、というのが妥当なところですかね。

おわりに

多少 PHP を知っていれば簡単な修正で復旧しますが、そうでない方にとっては若干ハードルが高い障害対応だったと思います。

Word Pressコース もある TechAcademy [テックアカデミー] など活用し、ベースの知識を学ぶことで、万が一のリスクに備えることができますよ。

楽しい WordPress ライフを送ってください!


なお、この記事はアメブロさんに投稿した内容に追記、加筆して公開いたしました。

[WordPress] 障害報告 AMPのプラグイン更新でFatal発生(17/8/8)
https://ameblo.jp/atuweb/entry-12299669261.html

また、全く同様のトラブル対処について掲載されておられる方がいらっしゃいましたため、リンクを掲載いたします。

WPのAMPのエラーなの?Fatal error: Cannot make static method AMPの対処法
http://memento79.net/amperror-2749


WordPressのツボとコツがゼッタイにわかる本

中田 亨
出版社:秀和システム  発売日:2017-03-10

Amazonで詳細を見る

小さなお店&会社の WordPress超入門 ―初めてでも安心! 思いどおりのホームページを作ろう!

星野 邦敏,大胡 由紀,吉田 裕介,羽野 めぐみ,リブロワークス
出版社:技術評論社  発売日:2016-07-15

Amazonで詳細を見る

いちばんよくわかるHTML5&CSS3デザインきちんと入門 (Design&IDEA)

狩野 祐東
出版社:SBクリエイティブ  発売日:2016-10-27

Amazonで詳細を見る

この記事の著者 Queue 8 Studio みちひこ