WordPressのエラー、突然表示されなくなった時の原因や対策

2019年10月21日

自分でWordPressやプラグイン、テーマなどを更新・編集した場合なら、エラーが出ても元の状態に復元すれば概ね解決できるでしょう。
ところが、何もしていないのにWordPressで500エラーが出たり、画面が真っ白になったり、管理画面にも入れないというトラブルが起きることもあります。

WordPress 5.3-jaへの更新時の注意

2019年11月19日現在のこと、当サイトでWordPress 5.3をWordPress 5.3-jaへと更新したところ、投稿と固定ページの入力画面が真っ白になる事象が発生!
ソースを見ると要素は読み込んでいるようですが、詳細は不明。ウェブサイトの表示には影響がないようにも見えます。
暫定対応としては、WordPressの投稿設定で【旧エディター】に変更したところ、管理画面での入力が可能となりました。
今となってはブロックエディターに慣れてしまっているので、WordPressのバージョンアップを待ちつつ、並行して検証も続けたいと思います。

ブラウザ再起動とキャッシュクリアで解決!

本日は2019年11月20日、昨日書いたWordPress 5.3-jaへの更新に伴い、投稿と固定ページが真っ白になる事象ですが、以下の対処で問題解決しました。

  • テーマLuxeritasのバージョンを3.6.12.2から3.7.2.2にバージョンアップ
  • ブラウザを再起動してキャッシュをクリア

エラーの原因を見つけるためのDEBUG_LOGとは

WordPressの管理画面にもログインできない場合、まずはWordPressでどんなエラーが出ているかをチェックするために、FTPでサーバーにログインしてwp-config.phpというファイルを編集しましょう。
wp-config.phpにはデフォルトで下記の記述があります。

define( 'WP_DEBUG', false );

これはデバッグモードを使わないという意味で、本番環境に問題がなければこのままにしておくもの。
トラブル時はこれを以下の記述に変更します。

define( 'WP_DEBUG', true ); //デバッグモードを使う。
define( 'WP_DEBUG_LOG', true ); //デバッグログファイルを出力する。
define( 'WP_DEBUG_DISPLAY', false ); //ブラウザ上はエラーを表示しない。
@ini_set( 'display_errors', 0 ); //ブラウザ上はエラーを表示しない。

なお、ここで注意したいのはデフォルトだとWodrPressがインストールされているディレクトリの下にあるwp-contentの直下にdebug.logというファイルが生成されること。これはインターネット上で公開される領域なので、第三者にアクセスされるリスクがあります。
そこで、利用しているサーバーで利用可能であれば、ブラウザで表示されないディレクトリを指定する、下記の方法をおすすめします。

define('WP_DEBUG', false); //デバッグモードを使わない。
@ini_set('log_errors','On'); //エラーメッセージをログファイルに出力する。
@ini_set('display_errors','Off'); //ブラウザ上はエラーを表示しない。
@ini_set('error_log','/xxxx/php_error.log'); //ログファイルの出力先を指定する。xxxxは任意でブラウザで表示されないディレクトリとしたい。

DEBUG_LOGの内容をチェックする

上記設定をした上で、FTPでサーバーにログインすると、下の画像のようにwp-contentの直下にdebug.logが生成されていることがわかります。

このファイルをダウンロードして、.txtという拡張子を付けると、エクセルの「データ」メニューから「テキストまたはCSVから」という機能を使って読み込むことができます。

Column4がエラーを引き起こしている要因。

上図の場合、Column3のPHPに問題があって、Column4にはどのファイルの何行目に問題があるか記述されています。

エラーを回避する方法

エラーの要因となっているファイルがテーマやプラグインの場合、FTPで一旦そのプラグインのディレクトリ名を変えてしまえば、ひとまず無効化できるので、管理画面にログインできるようになる可能性があります。
本来使わなくていいプラグインなら、これで問題解決となることもあるでしょう。
テーマの場合、手を加えていないのにエラーが出ているなら、そのファイル自体の問題と外的要因の両方を疑う必要があります。

PHPのメモリ制限を増やす

設定やプラグイン、テーマに手を加えておらず、投稿をしているだけなのに突然エラーが出た場合にPHPのメモリ割当が足りなくなったというケースがあります。debug_logにPHP Fatal error: Allowed memory size of~という記述があれば、wp-config.phpに以下のような記述を追加すると問題解決する場合があります。

define('WP_MEMORY_LIMIT', '256M');

突然のエラー発生の心構え

エラーが起きる要因は様々なので、複数のプラグインを有効化している場合、プラグイン同士の相性などでエラーになるケースもあります。設定変更などしていないのに突然エラーが発生するとかなり慌てると思いますが、debug_logを確認すれば原因を特定できる可能性も十分にあると知っておきましょう。