WordPressを触っていると誰もが1度は経験したことがある死の白い画面。
以前までは「画面が真っ白になって何も表示されない現象」ということで、死の白い画面=WOTD(White Of The Death)と呼ばれていましたが、WordPressのいつぞやのアップデートで「このサイトで重大なエラーが発生しました」というテキストが表示されるようになりました。
ただ、真っ白い画面からテキストが表示されるようになっただけで、サイトが表示されなくなってるのは以前と同じで変わらないです。
「このサイトで重大なエラーが発生しました」というテキストが表示されたときには原因がいくつかありますので、それをひとつずつクリアにしていくことで表示されるようになります。
もし「このサイトで重大なエラーが発生しました」が表示されたら下記の方法を試してみましょう。
まずは落ち着く
問題の切り分けをするためにも、まず落ち着いてひとつずつ試していくしかありません。原因は様々ですが、手当たり次第に対処してしまうとセキュリティが甘くなったり、本来は元に戻るはずが戻らないということにもなりかねません。
ひとつずつ「トライして直らなかったら元に戻して、違う方法を試す」というのを徹底しましょう。
また、「このサイトで重大なエラーが発生しました。対応手順については、サイト管理者のメール受信ボックスを確認してください。」と書かれているように管理者宛にメールが届いていることがありますので、まずはそれを確認することが大切です。
下記の方法は、WordPressのダッシュボードにログインできない状況で、さらにメールが届いていないときにFTPを使って復旧を目指します。
プラグインを無効にする
WordPressにインストールしているプラグインが何かのエラーを起こしている可能性がありますので、まずはそちらのアップデートなどを疑ってみます。
FileZillaなどのFTPクライアントから下記にアクセスします。
wp-content/plugins
pluginsフォルダにプラグインに関するファイルが含まれているので、フォルダを下記のようにリネームしてWordPressが強制的にプラグインを読み込めないようにします。
plugins → plugins-hold
WordPressのダッシュボードにログインできるようになったら、ひとつずつプラグインを有効化していきましょう。
また、使っていないプラグインがあるのであればアンインストールしておくことも大切です。
適用しているテーマを無効にする
functions.phpを編集したときにエラーになった可能性があるのであれば、適用しているテーマをデフォルトのテーマに変更することでWordPressのダッシュボードにログインできるようになります。
こちらもFTPクライアントから下記にアクセスします。例えばテーマの名前が「abc」という名前だったら、下記のようになります。
wp-content/themes/abc
この「abc」を下記のようにリネームして、WordPressがテーマを適用できないようにします。
abc → abc-hold
WordPressは設定したテーマが適用できなかったらデフォルトのテーマを適用するように作られているので、これで強制的にデフォルトのテーマを適用させます。
トラブルに遭ったテーマを再度適用すると同じ現象になってしまいますので、functions.phpで編集した部分を修正してから適用するようにしてください。
また、どの部分をどうやって編集したのか分からなくなった場合は、テーマを配布しているサイトからWordPressのテーマを再度ダウンロードすることでfunctions.phpの初期状態のものが入手できると思いますので、それをFTPでアップロードして適用しましょう。
デバッグモードを使う
開発者向けのデバッグモードを使ってログインを試みます。デバッグモードは初期値で無効になっていますので、これを有効にします。
FTPクライアントでルートディレクトリにある下記のファイルを見つけます。
wp-config.php
このファイルは設定をミスると白い画面になったりするので、必ずバックアップしてから編集するようにしてください。
ファイルをダウンロードしてテキストエディタで開き、下記の文言がある場所を探してください。Ctrl+Fで検索すると良いですね。
WP_DEBUG
おおよそ下記のような感じで見つかるはずです。
define( 'WP_DEBUG', false );
このfalseの部分ををtrueに変更することで、デバッグモードが有効になります。
define( 'WP_DEBUG', true );
このデバッグモードはWordPressを修復するものではなくて、あくまでどの部分に問題があるかを表示するだけです。
次にファイルとしてエラーを表示させるコードを、define( ‘WP_DEBUG’, true );の下に追記します。
こうなります。
define( 'WP_DEBUG', true ); define( 'WP_DEBUG_LOG', true ); define( 'WP_DEBUG_DISPLAY', true );
これで、下記にログが表示されるようになります。
wp-content/debug.log
WordPressで困らないために
WordPressを使っていく以上、「このサイトで重大なエラーが発生しました」と付き合っていかないといけません。問題が発生したときに復旧がスムーズにできるように下記の方法を徹底しておきましょう。
テスト環境を用意しておく
テスト環境と本番環境を準備しておくのがおすすめです。テスト環境でエラーが出た場合でも本番環境には影響がありませんし、本番環境のファイルをテスト環境にリストアすることで、テスト環境を元に戻すこともできます。
機能を実装するときは、ローカルで実装 → テスト環境で実装 → 本番環境に実装という方法で行うのがおすすめです。
バックアップを確実にとっておく
定期的にバックアップできるプラグインが多数ありますので、それらを使って常時バックアップを取るようにしておきましょう。
おすすめのバックアッププラグインはUpdraftPlusで、定期的に好きな方法でフルバックアップすることができます。
個人的には毎日全部のデータを7日分取るようにしていて、さらにバックアップファイルはGoogleドライブに置かれるようにしています。
バックアップがあると、ハッキングなどの被害に遭ってサイトが改竄されたとしても、WordPressをクリーンインストール → リストアすればすべて元通りにできます。
さいごに
WordPressはナレッジが豊富なのでいろんなことを試したくなったりしますが、かなり奥が深く複雑なシステムです。
要件が合わなくてエラーになったり、アップデートでエラーになったり、思わぬところで時間をロスしてしまいますので、むやみやたらに触って壊してしまわないように、ある程度の事前知識を身に付けておくことが大切ですよ。