「致命的なエラーをチェックするためにサイトと通信できないため、PHP の変更は取り消されました。」が出た時の確認事項と解消方法例

公開日:2025(令和7)年2月26日/最終更新日:

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

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



テーマファイルエディターや、プラグインファイルエディターでコード編集をして「ファイルを更新」をクリックすると出る「致命的なエラーをチェックするためにサイトと通信できないため、PHP の変更は取り消されました。SFTP を使うなど、他の手段で PHP ファイルの変更をアップロードする必要があります。」というメッセージ。

文字通り、この処理を行うためにサイトと通信できない(正確にはサーバー内でファイル更新のやり取りが確立できない)から更新を取り消しましたよ!というものなのですが、なんじゃらほい?ですよね?

そして厄介なのは、PHPファイルをWordPressの管理画面上で編集して保存するときだけ発生するので、よく行うスタイルの編集では発生しない点で、結構不具合の発生に気づかないことが多いです。

さて今回は、自身の備忘録を兼ね、このエラーメッセージが出てWordPressの管理画面上でPHPファイルの更新ができなくなってしまう原因、確認方法、解消方法の一例を紹介します。

あらかじめ断っておきますが、今回紹介するのはケースであり、それ以外の要因で起こる可能性もありますのでご了承ください。

メッセージが出た時即座に行うこと

まずこのエラーは..ということを語る前に、必ず行っておきたいことがあります。

それは、エラーが出た段階で慌てて画面のリロードや開きなおしをせず、そこに書かれているすべてのコードをバックアップすることです。

なぜかと言うと、画面の遷移やリロードによって、今見えているコードがすべて消失してしまう可能性があるからです。

「え?コード消えなかったし..」という経験をした方はラッキーです。

というのは、WordPressの管理画面からの編集では以下のようなプロセスを経て書き換えが行われ、どの段階で転んでいる(エラーとして処理されている)かが分からないからです。

  1. WordPressの管理画面からPHPのコードエディターを開く
    ※この時点で見えているものは、一旦ブラウザ上でファイルから受け取ったコードを表示させているだけの状態
  2. コードを編集する
    ※この時点では表示させているだけの画面に何かしらの編集を加えているだけ
  3. 「ファイルを更新」をクリックする
    ※この段階から4以降のチェックや処理が水面下で行われる
  4. サーバー内のファイルと通信し、OKならサーバー内同名ファイルの記述を削除
  5. コードエディターに書かれているコードすべてをファイル内へ追加
    ※この時同時に構文エラーがないか、処理できないコードがないかのチェックも入る
  6. 追加が完了したかをサーバー内でやり取り
  7. 完了するとWordPressの管理画面上に「更新しました」と表示させ、処理終了

実際にはこんな感じの流れで編集したものが更新されますが、4~7は目に見えて今この処理をしていますというのが分かりませんから、例えば4の段階が終わった時点で転んだ場合には次に画面を開くとコードがすべて消えているということが起こり得るのです。

ですからもう一度書きますが、エラーが出た段階で慌てて画面のリロードや開きなおしをせず、そこに書かれているすべてのコードをバックアップするようにします。

QA Analytics QA Analytics

致命的なエラーをチェックするためにサイトと通信できないため..の発生原因と対処例

発生する大きな要因に関するキーワードは「セキュリティ」です。

以下があり得るケースです。

  • サーバーの不正通信を遮断しようとするセキュリティ機能(いわゆるWAF)
  • 自身で行ったアクセス制限などの記述(.htaccesへの記述など)
  • セキュリティ系プラグインやコードによる不正な通信を制限する機能

何もしていないのに..と本当に心当たりのない方は恐らくWAFの問題であることがほとんどです。WAFはレンタルサーバーが提供する不正防止の機能で、多くは自社で開発したものではなく、WAF用のツール(っていうのかな)を適用させています。つまりサーバー側で調整や制御ができるものではないため、このツールの更新が行われると突然PHPファイル更新時のエラーが出始めるのです。

大抵はその後数日などが経過すると、きつすぎた制限が緩和され解消されることがほとんどですが、今すぐ何とかしたいという場合には、一旦サーバーの管理画面でWAFを切る措置を行うといいでしょう。

今回のPHP更新エラーが出たように、WAFはサーバーセキュリティに関してとても有効な防衛手段ですので、一旦無効にしたとしても編集後は必ず有効に戻すようにしましょう

次に多いのが自身だけが見るサイトだから.htaccessでアクセス制限をかけたという例。

恐らく以下のようなコードを追記して、特定の拠点(IPアドレス)以外からのアクセスをすべて遮断することが多いでしょう。

# AccessControl IP/HOST
order deny,allow
deny from all
allow from xxx.xxx.xxx.xxx

実に強力にアクセス制限を掛けられるのですが、先ほど説明した通り、このエラーはサーバー内での情報のやり取りがうまくいかないことが原因ですので、自身がアクセスする元のIPアドレスだけでなく、「allow from xxx.xxx.xxx.xxx」を一行追加して、サイトを公開しているIPアドレスを通すようにしておくことで、今回のエラーは回避できます(公開IPアドレスについてはサーバーの管理画面などで確認ください)。

この方法で改善したら、ハイ終わり!ではなく、一旦その記述を削除してみて再度エラーが出るようになるかどうかを確認し、確定診断とするといいでしょう

サーバーによっては定期的に公開IPアドレスが変わるところもあるようで、そのタイミングでエラーが出だすケースもあるようですからエラーが出たらチェックしなおしてみるのもいいかも知れません

最後に可能性があるのがセキュリティ系プラグインによる遮断です。

私はその手の機能を他の方が提供しているプラグインに頼ってないので検証はしていませんが、プラグインを停止するだけで制限が解除されるものもあれば、プラグインを削除すると解除されるもの、削除しても制限が解除されないもの(プラグインから.htaccessなどへ記述を追加し、プラグインを削除してもその記述は残ったままになっていまうもの)などいろいろあるようです。

一旦そうしたプラグインを停止してテストしてみる、削除してテストしてみる、.htaccessファイルを開いてプラグイン名のようなコメントがあるかを確認し、その前後に書かれているコードに前述のアクセス制限のコードのような記述が残っていればすべて「#」を付けて無効にしてみるなどいろいろと試してみるといいでしょう。

以上、「致命的なエラーをチェックするためにサイトと通信できないため、PHP の変更は取り消されました。」が出た時の確認事項と解消方法の一例でした。

エラーが出たらまずはコードのバックアップ(パソコンのコードエディタツールなどへコードをすべてコピーする)、続いて原因の追跡と対処という順番で、大切なサイトを守りましょう!!

ネット上に転がっている情報を参考にしない方がいいこと

ネット上には結構WordPress本体のとあるファイルの記述に追記したり、どこかをコメントアウトするなどという情報も掲載されています。

確かに今回のエラー回避のためということだけを考えればそれも方法の一つかも知れません。

が、ちょっと待ってください。そのコード全体の意味や意義を理解した上で無効にしていますか?解消されたからOKと鵜呑みにしていませんか?

それらのコードは必要だから記述され、必要だからチェックが入り、必要だからエラーが出るようになっています。本当に無効にして大丈夫ですか?

恐らくこのページを見て何が根本原因の可能性があるのかというのは掴めたのではないかと思います。そう、必要なセキュリティ対策なのです。

もしも本ページの要因のどれでもなければ、何も分からずに本体のコードを改変することは極力避け、別の原因を特定され対処方法を提供されている他のページを参考に改善してみる、それでもだめならWordPressの管理画面上での編集はやめ、パソコンに保存したファイルを編集して上げなおすという方法を取るようにすることをおすすめします。



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…」の対処(メモ)