この記事を読んだときにはもう・・・かも知れませんが何でそんなことが起こったの?どうすれば今後回避できるの?という意味合いも込めて、紹介しておきます。
この現象が発生したのは知人がWordPressで作ったサイトのテーマを編集したときのこと。フッターの内容をちょっと変えてほしいということで「そんなの楽勝じゃん!」と思い編集画面を開き、更新ボタンをクリックしたときのことでした。
クリックすると「致命的なエラーをチェックするためにサイトと通信できないため、PHP の変更は取り消されました。SFTP を使うなど、他の手段で PHP ファイルの変更をアップロードする必要があります。」というメッセージ。いつものロールバックメッセージとは少々違う内容だったのでそのままにしてネットで検索、すると・・・いろいろなサイトでバグだから再度更新ボタンをクリックすればそのまま別のページへ行っても大丈夫的なものが紹介されていました。
それを信じて再度更新ボタンをクリックし、ページを離れようとしたときアラートが出ましたが、まあ大丈夫だろうと別ページへ移動したら・・・表示が崩れてしまったんです。
何で??で再度フッターの内容を見てみると・・・なんと中身が空っぽ!!(泣)。幸い無料のテーマでしたし、バージョンが違ってもフッター(footer.php)の内容は変わってなかったようなので、上書きしたら元に戻りました。もしもそうじゃなかったらと思うとちょっと青くなりました。
私のようにならないためにも以下のことをやるようにしましょう(現在では必ずやるようにしてます)
テーマ編集前にバックアップを取る
これが一番の対処方法。FTPなどで該当ファイルのバックアップを取っておくということです。もしもFTPでのファイル転送が使えないときは
など管理画面からファイルの転送が使えるプラグインを使えばできることが多いですからインストールしておくといいかも知れません。
既に画面から離れられなくなったときは
そりゃバックアップがあれば復元可能でしょうよ!と思われますよね?こういうトラブルは突然やってくるんですから、遭遇したときにはすでに遅しなんてこともあるかと思います。
そんなときは、編集ページから離れる前に以下の手順で復旧できる状態を作りましょう
- ・・・移動しますか?とアラートが出たら迷わず「このページに留まる」を選択します
- アラートが消えたら内容をすべてコピーし、メモ帳(できればきちんとしたテキストエディタが望ましい)に貼り付けて保存する
これで簡易的にバックアップができたので、更新して、アラートが出たらそのページから離れてみます。
もう一度同じ編集画面を開き、内容(ソース)が表示されればラッキーです。
もしもダメだったら・・・前述したバックアップのファイル名をエラーが出たファイル名(拡張子も含む)にして元の場所へ上書きすれば復元できます。
そもそもこのエラーが起こる原因は何??
原因が知りたいところではありますが、このエラーについては諸説あります。例えば
- テーマとプラグインとの競合
- WordPressとテーマとの競合
- サーバーの権限設定
- アクセス制限
などなど俗に言う「環境によって・・」ということのようです。
でも「致命的なエラーを回避するために送信に失敗しました」と出た後で何かするというのは無理ですから、ひとまず回避して復元し、後から原因を探るというのが正しい方法だと思います。
ちなみに
のようなエラーが出て「ロールバックしました」と書かれている場合にはきちんとエラーが出る前の状態に戻っており、更新ボタンをクリックすればアラートなしで更新されますので安心して大丈夫だと思います(不安であれば紹介した方法でソースのコピーを取っておきましょう)。
通常通りテーマ編集できるようにするために試すこと
ここまで私の体験と、事前バックアップの必要性、エラーが起こる原因について書いてきましたが、できれば以後も編集できるようにしておきたいものですよね?本当にそのサイト・環境により対処はさまざまですが、確認事項や対処方法を紹介しておきます。
一番多いのはプラグインとの競合
テーマの編集はたまにしかしませんから、こうしたエラーが出ると少し慌てますね。でも前回のテーマ編集から今回までの間にプラグインの追加を行ったのなら、そのプラグインとの競合が一番疑わしいです。特に何かのコンテンツを追加するタイプのプラグインでは、テーマのファイルが処理される前に何かを差し込んで・・・なんて処理するものもありますので、そうしたプラグインから停止してはテーマ編集してみてというのを繰り返してみてください(いきなりプラグインを全停止すると問題の根本が発見できません)。
ちなみに経験上では予約システムを構築する「Salon booking system」
というプラグインを追加したらテーマのsingle.phpやpage.phpなどが編集できなくなりました。
※停止したら編集できるようになったので恐らくこのプラグインが原因かと思われますが、これも環境により・・・かもしれないので何とも言えません
アクセス制限の確認
プラグインまたは.htaccessファイルなどによって特に管理画面へのアクセス制限を行っている場合にこのエラーが起こることがあります。それらの設定を行っているセキュリティ系のプラグインを停止してみる、.htaccessファイルに書かれているアクセス制限の内容をコメントアウト(行の先頭に#をつける)するなどして変化がないか確認しましょう。
ファイルの編集権限の確認
プラグインを停止してもダメであれば次はテーマの問題です。もしもファイルの編集権限の問題であれば、テーマを変更してみると解消できるかもしれません。プラグインをすべて停止した状態で、WordPressのデフォルトテーマ(Twenty Twenty)などへ変更し、テーマの編集(今までのテーマで問題の起こったファイルと同名のものが望ましい)をしてみてください。
もしもこれで問題解決できるようでしたら、FTPやサーバーのファイルマネージャーなどで編集できないファイルのパーミッションをチェックしましょう。通常テーマ関係のファイル・フォルダ類は「755」になっていると思いますので、そうなっていなければ変更してみてチェックします。
またこれとは別にファイルの所有権というものがあり、それが自身でない場合には同じようにファイル編集ができなくなりますから、ついでに所有権も確認しましょう。ファイル所有権については特に自身で何もしていなければ勝手にサーバー側で変更されるものではありませんが、何かのファイルをFTPでアップロードした際に所有権がサーバー管理者となってしまうケースがありました。そうなると自身での変更は不可能ですので、サーバーへ問い合わせをしてみるといいかと思います。
参考: