saikoの日記帳

技術
2019.08.16

wordpressで起きた「更新に失敗しました」問題

hetemlに対してブチ切れる午後5時

今日もせこせこしこしこお仕事三昧。
納期が目前に迫っている案件をやっている中突如現れる、「更新に失敗しました」!

失敗しました、じゃねーんだよ。
せめて何がエラー起こしているのか原因を記述せよって言うんだよ。
その辺親切じゃねえのどうにかしろよ!!!

【事件概要】
・WordPress 5.0.2を利用中のサイトにおいて、固定ページの更新が失敗する減少が発生
・PHPのバージョンは5.4と古いもので、それが理由でWordPressも古いものを利用していた
・hetemlではエラーログを見ることができるが、PHPエラーログには何も表示されず

【行った対応】
・hetemlでは特定の記述を.htaccessにすることでPHPバージョンを管理することができるので、7.0に上げてアップデートを実施
・原因と思われるプラグイン等を停止、削除

以上が事件の概要です。
新規作成は上手くいくのですが、過去の固定ページを更新等しようとするとなぜか「更新に失敗しました」と表示されて更新がされませんでした。
記述を削除していってもなぜか失敗するので、実質更新が不可能に。

調査結果と対応策について

結論としては、hetemlが常備しているWAFが原因だったみたいです。
以下、原因と対策です。

【根本的な原因】
hetemlのWAFが、WordPress5.0以上で実装されたGutenbergの更新機能を攻撃とみなしていたことが原因でした。
Gutenbergのみ?更新などの際にJSを使って非同期にしている?らしく、それに使うJSがエラーを吐いていたみたいです。
そのため、開発者ツールでconsoleを見てみたら、 api-fetch.min.js ってやつがエラーを起こしていました。
ここで止まっていたということですね。

【対応策】
調べてみたら過去に記述していた人がいて、hetemlのWAFを通らせるようにしたら直りました。

https://heteml.jp/support/manual/waf/

上記はhetemlのWAF設定についてです。

hetemlでWAFログを見てみるとわかるのですが、恐らくWordPressの更新処理が攻撃性のあるものとして弾かれてると思います。
そのため、その処理を「攻撃ではありません!」と設定する必要があります。

ログに何の処理がエラーになっているか記述されていましたので、それを.htaccessの一番下に記述したら更新できるようになりました。

以上

それでは今日はここらでサヨウナラー

同じカテゴリの他の記事

新着記事