先日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ライフを送ってください!

この記事はtomita@atuwebがお届けしました。


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

[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



2017年09月28日:画像のキャプションを設定