いつのことからだろうか?
「致命的なエラーをチェックするためにサイトと通信できないため、PHP の変更は取り消されました。SFTP を使うなど、他の手段で PHP ファイルの変更をアップロードする必要があります。」
英語だと、
Unable to communicate back with site to check for fatal errors, so the PHP change was reverted. You will need to upload your PHP file change by some other means, such as by using SFTP.
と言うメッセージでWordpressの管理画面からfunction.phpをはじめとして拡張子が.phpのファイルが更新できなくなった。
この記事では、Wordpressの管理画面からPHPファイルの更新が出来なくなった時の解決方法についてまとめています。この記事を読むことでとても簡単に問題を解決することができます。
このメッセージはなぜ出るの?
このメッセージを検索すると原因ははっきりしている。
WordPress4.9からついたエラーチェック機能が犯人
WordPress4.9から追加された機能がメッセージを出すそうだ。
コーディング機能の強化
構文ハイライトとエラーチェック? イエス、プリーズ!
これまでは表示に問題があっても、愛情を込めて書いた CSS のどこに間違いがあるのか正確には分かりませんでした。CSS 編集と WordPress 4.8.1で導入されたカスタム HTML ウィジェットに実装された、構文ハイライトとエラーチェックを使えば、コーディングエラーをすばやく特定できます。より簡単にコードを見て確認し、コードのエラーをすみやかに修正するのに役立つでしょう。
安全のためのサンドボックス
真っ白な画面は非常に恐ろしいですね。WordPress 4.9はエラーがある状態で保存すると警告するので、テーマやプラグインに取り組んでいるときに白い画面を避けられるでしょう。夜はもっとよく眠れますね。
潜在的な危険を警告
テーマやプラグインを直接編集すると、WordPress 4.9はそれが危険なやり方だと警告します。そしてファイルを改変する前にバックアップするように勧めます。安全なルートを選べば、後から自分自身もチームと顧客もあなたに感謝することでしょう。
WordPress4.9でメッセージが出ていなくても安心できない
私が管理しているサイトにも、最近この忌々しいメッセージが表示されるようになった。しかし、表示されるようになったのはWordpress5.1あたりからで4.9の頃にはメッセージは出なかった。
例の「致命的なエラーをチェックするためにサイトと通信できないため、PHP の変更は取り消されました。SFTP を使うなど、他の手段で PHP ファイルの変更をアップロードする必要があります。」が出る要因としてネットでよく書かれているのは、WAFの影響を疑えというのが主流です。
しかし、私のサーバーはWAFの機能はありませんのでWAF影響説は関係なし、さらにWordpress4.9の時には問題のメッセージは出ていなかったので、なんか後天的に作り込んでいるという可能性が高い。
別のメッセージのパタンもある
実は、function.phpが保存できないもう一つのサーバーがあり、そのサーバーには今回とは別のメッセージが表示されていた。
「何かうまくいかなかったようです。変更が保存されていないかもしれません。手動で修正し、FTP 経由でファイルをアップロードすることもできます。」
この問題は、プラグインが原因でメッセージが表示されていたということを以下の記事でまとめている。
今回も、もしやプラグインが悪さしている?
と思って、ひとつづつ停止にしていくと、なんと普通に更新⇒保存できるようになりました。
じゃぁ、どれが原因のプラグインなの?と思って、今度はひとつづつ有効化していく。
全て有効化しても正常に保存できる状態でした。
なんで??
と思いましたが、おそらくプラグインが何らかの悪さをしていたのだと思います。結局、どのプラグインが悪かったのかは特定できず。
また同じ現象が起きたら、同じようにプラグインをひとつづつ停止して有効化するという方法で解決できそうだという見込みは立ったので良しとしたいと思います。
REST APIが無効になっているとメッセージが出る
REST APIが使用禁止になっていると、このメッセージが出るようです。
セキュリティ系のプラグインや、メンテナンスモード、パスワードプロテクト系のプラグインなどではREST APIが禁止されているものがあるので、その場合は許可してあげれば大丈夫です。
有名どころだと、password-protectedというサイトにパスワードを付けるプラグインが初期状態だとREST APIを禁止しています。
設定に、REST APIを許可するチェックがあるので、そちらをチェックするとメッセージが出なくなります。

WordPress4.9からメッセージが表示されて消えない人は?
①コアファイルの修正方法
まじめに、Wordpress4.9から「致命的なエラーをチェックするためにサイトと通信できないため、PHP の変更は取り消されました。SFTP を使うなど、他の手段で PHP ファイルの変更をアップロードする必要があります。」と言うメッセージに悩まされている人は、以下の記事を参考に修正されたらよろしいかと思います。コア本体の修正なのであまりお勧めは出来ませんが。
②コアファイルのもっと簡単な修正方法
①の修正内容は編集量が多いので、修正内容が簡単なこちらの修正方法の方がおススメです。
wp-admin/includes/file.phpを編集します。
変更前
<?php
if ( $is_active && 'php' === $extension) {
変更後
$extensionの後に、&& falseを追加する
<?php
if ( $is_active && 'php' === $extension && false) {
WAFが原因の可能性もある
サーバーのWAFが初期状態でONになっているサーバーではPHPのファイル編集が禁止されていることもある。WAFをすべてOFFにしてエラーが消えるかどうか確認したほうが良い。
セキュリティ系のプラグインも同様に悪さする可能性があります。
まとめ
WordPressのテーマ編集機能は、使えなくなるとその偉大さに気が付くわけです。ご丁寧に表示されるメッセージを見て、いちいちFTPなんてしてられるかよ、というのが皆さんの意見だと思います。
すくなくともWordpress4.9以降にメッセージが急に表示された場合は、プラグインの影響を疑った方が良いでしょう。とりあえず片っ端から停止していけば問題が解決する可能性は高いと思います。もし、とてもメジャーなプラグインしか導入していなくても一度試してみるとスッキリさわやかな感じになると思います。