WordPressで画面が真っ白になったら「Fatal error」を探せ!
WordPress個別サポートのお客様からもよく聞くセリフです。
いくつかの原因がありますが、ここでは典型的な原因と対処方法を紹介します。合言葉は「画面が真っ白になったらFatal errorを探せ!」です。
「Fatal error」とは何なのか、今は考えなくても大丈夫です。
画面が真っ白ではなく「データベース接続確立エラー」とだけ表示されている場合は以下のページも参考にしてください。
WordPressで「データベース接続確立エラー」と表示されるとき
この記事の内容
画面が真っ白になる原因
画面が真っ白になった方は急いで対策を探していることとは思いますが、少し回り道をして、画面が真っ白になる仕組みから説明します。
WordPressで画面が真っ白になるのは、表示中のページの裏で動いているプログラムに問題があるからです。「このページには問題があるため、これ以降は処理を続けられません!」となって画面が真っ白になるのです。
画面が真っ白になったら「サイトが消えた!」と大騒ぎしたくなるかもしれませんが、ほとんどの場合は記事やページの内容を表示できないだけのことです。ご安心を。
といっても、昨日まで問題なく動いていたWordPressシステムやテーマが急に暴発することはありません。ほとんどの場合、
- 最近インストールしたプラグイン
- さっき修正したテーマのPHP(特にfunctions.php)
- WordPressアドレスの修正ミス
が原因になっています。
ですから、画面が真っ白になったときは「最近インストールしたプラグインが問題かも」とか「さっき修正したfunctions.phpのせいかも」と仮説を立てて対処していくのが良いです。
画面が真っ白になるとすぐに「WordPressの再インストールが必要?」のように極端な対策に意識を向ける方がいますが、ほとんどの問題の原因は追加したプラグインや修正したファイルにしかありません。あらぬ方向に意識を向けず、最近行った作業を振り返って問題の原因を探してください。
本当は画面は真っ白ではない?!
問題の原因を探すキーワードは「画面が真っ白になったらFatal errorを探せ!」です。
とはいえ、真っ白画面のどこから「Fatal error」とやらを探すのか疑問だと思いますが、実は、「画面は真っ白ではない」のです。
本当は真っ白ではなく、次のようなエラーメッセージを表示できるのです。
みなさんが大騒ぎする真っ白な画面は、表示できるエラーメッセージを非表示にしているため、真っ白に見えているだけなのです。
エラーメッセージが表示されないのは不具合ではなく、ハッカーなどに不要な情報を与えないためのセキュリティ対策の一環だと思ってください。
エラーメッセージには不特定多数のユーザーに見せる必要のない情報が含まれている場合があるので、サイトを稼働させる環境(いわゆる本番環境)では非表示にするのが一般的です。
話が長くなりましたが、そのような理由で一般的なレンタルサーバーではWordPressサイトで問題が発生してもエラーメッセージは表示されません。そのため、いろいろな問題が起きても「完全に画面が真っ白!」となるのです。
消えたエラーメッセージを表示する設定
非表示になっているエラーメッセージを表示して「Fatal error」を探しましょう。それには、WordPressの設定ファイル(wp-config.php)を修正します。
WordPressインストール先のフォルダにある設定ファイル(wp-config.php)を開いて、次のコードを探してください。
define('WP_DEBUG', false);
初期設定では「WP_DEBUG」(エラーメッセージの表示)が「false」(しない)に設定されているので、「false」を「true」(表示する)に変更します。
define('WP_DEBUG', true);
これで、画面が真っ白になったページを開くとエラーメッセージが表示されるはずです。
膨大なエラーメッセージ、最後の1行に注目!
さて、表示されたエラーメッセージを見て逆に不安になったかもしれません。場合によっては想像以上に膨大なエラーメッセージが表示されるからです。
でも大丈夫です。落ち着いてください。この記事のテーマは「Fatal errorを探せ!」です。その「Fatal error」は最後の行あたりに表示されているはずです。
間違っても、一番上の行から1つずつ解読しようと思わないでください。PHPの勉強にはなりますが。
エラーメッセージが膨大に表示されるのは、小さい問題から大きな問題まですべてのメッセージが表示されるためです。
ほとんどは単なる「注意」で、イエローカード的なエラーメッセージです。画面が真っ白になるほど深刻ではありません。
一発で画面が真っ白になる「レッドカード級のエラーメッセージ」は一番最後に表示された「Fatal error」です。
「Fatal error」を訳すと「致命的なエラー」です。処理を続けられないほど重大なエラーが発生したため、そこで処理を停止するという意味です。
つまり、「Fatal error」以降は何も表示できないので、最後に表示された「Fatal error」を見れば問題の最大の原因が特定できるということです。
「フォルダごと削除」でひとまず問題解決!
「Fatal error」の後に「Call to undefined function」(未定義の関数を呼び出した)などのメッセージが表示されますが、深追いは禁物です。エラーメッセージの解釈には相当なPHPの経験が必要だからです。
ここではPHPの経験がなくても大丈夫なように、エラーメッセージを解釈せずに問題を解決する方法を紹介します。
「Fatal error」のエラーメッセージを見ていくと最後の方に、エラーの原因になったファイル名(フォルダ名も)が書いてあります。
おおざっぱに言えば、次のような構成の「フォルダ名+ファイル名」が表示されます。表示された内容から、エラーの原因がテーマなのかプラグインなのか特定しましょう。
- プラグインが原因の場合:wp-content/plugins/プラグイン名/問題の起きたファイル名
- テーマが原因の場合:wp-content/themes/テーマ名/問題が起きたファイル名
上記の例では、pluginsフォルダのsample-plugin-abcフォルダにあるgallary.phpが原因です。この部分からsample-plugin-abcプラグインが問題の原因だとわかります。
テーマやプラグインが原因になっていることが特定できたら、対処は簡単です。
問題の原因になったテーマまたはプラグインをフォルダごと削除すれば解決です。
フォルダごと削除するというおおざっぱな対策よりも、エラーメッセージに示されたファイルを開いて問題のコードを修正したり、問題のあるファイルのみオリジナルファイルと入れ替えられればベストですが、慣れていないと難しいでしょうから、テーマやプラグインのフォルダを丸ごと削除するのが簡単です。
この例でも、問題が起きたプラグインのsample-plugin-abcフォルダを削除すれば問題はほぼ解決するはずです。削除するのはpluginsフォルダではなく、その中にある個別のプラグインのフォルダです。念のため。
まとめ
以上、簡単にですがWordPressで画面が真っ白になったときの対処方法を紹介してきました。まずは、wp-config.phpで「define('WP_DEBUG', true);」に設定してエラーメッセージから「Fatal error」を探しましょう。エラーの原因がテーマなのか、プラグインなのか、それ以外なのか特定することができます。
エラーの原因がプラグインやテーマだった場合、コード修正が難しければフォルダごとテーマやプラグインを削除して、とりあえず「画面が真っ白」の状態から脱出しましょう。
どうしてもうまくいかない場合は「Fatal error」のエラーメッセージをメモしてWordPress個別サポートにご相談ください。