テーマファイルエディターやプラグインファイルエディターで「何かうまくいかなかったようです..」と出て更新できなくなる原因

公開日:2024(令和6)年2月8日/最終更新日:

WordPress Trouble Shooting and Repair | Personal WP Customization Notes (PWCN)

【景品表示法に基づく表記】ページ内のコンテンツには、商品プロモーションが含まれています

久しぶりにカスタムコードを追加しようとテーマファイルエディターを開いて編集した時のことでした。

コードを書いて、いつも通り「ファイルを更新」をクリックしたら、下にエラーメッセージが表示されました。

WordPressのテーマファイルエディターやプラグインファイルエディターはコードに不具合がある時には直前でストップし、重大なエラーを防ぐ機能が備わっていて、外部で作成したファイルをアップロードするよりも安全だと個人的には思っていてよく使うので、「また何かコード間違ってた?」と思ったのですが、今回出たのは「何かうまくいかなかったようです..」というメッセージでした。

これもまあたまにログイン状態が不安定だった場合(例えば確認のために一旦別タブでログアウトした後で編集した時など)に出ることはあったのですが、そうではなかったようです。

ひとまず管理している他のサイトでも確認してみるも、どのサイトも同じ状況で、何もプラグインを追加していない状態、テーマもWordPressデフォルトの状態でもダメでした。

テーマファイルエディターでエラーが出た状態のまま、コンソール(デベロッパーツール)で確認してみると、「/wp-admin/admin-ajax.php」に対してアクセス拒否されている旨のエラーが出ていました。

これはWordPressだのPHPバージョンだのが起因する問題ではない!で疑ったのが、サーバーのWAF。WAFは「Web Application Firewall」の略で、平たく言えば不正操作されないようにするサーバーが提供する防御機能のことで、私が使用しているカラフルボックス ColorfulBoxでは、ModSecurityというWAFが無料提供されています。

カラフルボックス ColorfulBoxでは、ドメイン(サブドメイン)ごとに個別にWAFの有効/無効が選択できるので、試しにテストサイトで無効にしてみると、問題なく更新でき、有効にすると更新できないという状態、つまり原因はWAFだったのでした。

そこで、後述する内容でサーバーのサポートに問い合わせたところ、最近ルールが更新され、サーバー側ではModSecurityのルールについてどうこうできないとのことだったので、ひとまずテーマファイルエディターやプラグインファイルエディターを使用するサイトについては手動で有効/無効を切り替えて利用するようにしました。

以前からWAFがらみの不具合は何度か出たことは何度か経験はしているのですが、まさかサーバー側で調整が効かないとは..というところにびっくりしました。

これが実際に問い合わせた内容(抜粋)です。

WordPressで運営しているすべてのサイトで、テーマファイルやプラグインファイルの変更保存時にエラーが発生するようになりました。

以下がcPanelで記録されているエラーメッセージの1つです。
ModSecurity: Access denied with code 403, [Rule: ‘TX:log_cookie_3….’ ‘!@rx ^$’] [id “77316869”] [msg “IM360 WAF: WordPress theme edit. Block malicious injection||SC:/home/…/wp-admin/admin-ajax.php||WPU:….||Hash:….||Time:…login:1;get:;edit:1||User:uhohjzgj||T:LITESPEED||”] [severity “CRITICAL”] [tag “wp_core”] […] [uri “/wp-admin/admin-ajax.php”], referer: …/wp-admin/theme-editor.php

契約させていただいているすべてのサイトで事象は発生しており、
・プラグインをすべて停止
・テーマをデフォルトへ変更
・WordPressのバージョンを1つ前(記憶では正常に動作していた状態)へロールバック
等いろいろと試してみたものの解決せず、どのサイトにおいてもModSecurityを無効にすることでのみ、正常に更新できる状況となっております。

エラーログを見る限り、2月2日以降で突然発生していると思われるのですが、最終的に不具合が起きたのがいつからなのかは不明です(1月下旬あたりまでは不具合はなかったと思います)。

エラーメッセージ上でも、エラー発生時のブラウザのコンソールで表示されるエラーを見ても、/wp-admin/admin-ajax.phpに対してアクセス拒否されて更新が滞る状態のようです。

以上、よろしくお願いいたします。

ModSecurityを無効のままにしておくことは危険かと思いますので、現在は必要な時に有効/無効を切り替えて対処していますが、なぜ突然このような現象が発生しているのかが分からず問い合わせをした次第です。

何か対処方法や解決方法等がございましたらアドバイスいただけますと幸いです。

そして以下がサーバーからいただいた回答。

お問い合わせいただきありがとうございます。
カラフルボックスサポートチームでございます。

お問い合わせの件につきまして、ModSecurityの参照するポリシーに変化があったと考えられます。

ModSecurityにつきましては、セキュリティのために自動更新となっており、何らかの内容が
引っ掛かったと考えられます。

誠に申し訳ございませんが、ModSecurityのポリシーの変更などは出来ませんため、
回避方法は有効/無効を切り替えて運用いただくのみになるかと存じます。

誠に申し訳ございませんが、何卒ご理解賜りますようお願い申し上げます。
その他・疑問点などございましたら、お気軽にお問い合わせくださいませ。

Lolipop ServerMoshimo Ad x-serverMoshimo Ad

WordPress Trouble Shooting and Repair | Personal WP Customization Notes (PWCN)
画面上部に「PHP Notice: ob_end_flush(): Failed to send buffer of zlib output compression (0) in…」という表示が出る原因と対処