ボールを蹴りたいシステムエンジニア

ボール蹴りが大好きなシステムエンジニア、ボールを蹴る時間確保の為に時間がある時には勉強する。

【解決】WordPressで画面が真っ白エラーなった際の対処方法

WordPressのレイアウトを変更を行う為、ローカルでの稼働確認が問題無い事を確認して本番環境へ適用した所、画面が真っ白になってエラー発生。

症状としては、

・管理画面含む全てのWordPressページが真っ白画面
・左上に文字化け文字が表示される(恐らくエラーって文字が文字化けして表示されている)

バックアップを取っていたので、すぐさま切り戻しした所無事復旧。
焦った。


ローカルで問題無く表示しており本番環境でのみエラー。
調査した所、原因を特定。
以下の対策を行いました。

【原因1】プラグインの「Crazy Bone (狂骨)」の影響?

wp-config.phpを修正してデバッグモードにしてデバッグログを確認した所、以下のメッセージが。
※抜粋しています

PHP Warning:  Cannot modify header information - headers already sent by (output started at /home/www/content/themes/hogehoge/functions.php:1) in /home/www/content/themes/hogehoge/plugins/crazy-bone/plugin.php on line 321

プラグインの「Crazy Bone (狂骨)」のソースでエラーが発生している?
エラーログをググった所、こんな記事が

よくあるPHP エラー Warning: Cannot modify header information - headers already sent by - ウェブ管理者の日常


正直、根本原因分かりません。。
対策として、プラグインの「Crazy Bone (狂骨)」を削除した所、画面真っ白エラー画面無く、正常にサイトが表示されました。

ちなみに何故ローカルでは大丈夫だったかは不明です。。
必ずしも、プラグインの「Crazy Bone (狂骨)」でこのエラーが出るわけでは無いと思います。
実際これまで普通に使っていてエラー発生してませんでしたので。
何か別のプラグインや独自コードと競合してエラーが発生していたかもしれませんが、このプラグインはそこまで重要度は高くなかったので削除対応で解決としました。

【原因2】PHPファイルがBOM有りになっていた

原因1の対策を行い、無事サイトが復旧して喜んでいた所、数ページ遷移した所でまた真っ白画面エラーが発生。
調査結果、直ぐに原因は分かりました。
上記の参考サイトにあるように、ファイルが「BOMあり」だと、ファイルの最初に「BOM」っていうものが入ってしまう為、header関数でエラーが発生するとの事です。
正直、BOM有りに設定した覚えは無かったのですが実際に調べてみると、header.phpやfooter.php等10ファイル程がBOM有りになっていました。

対策として、全てのBOM有りファイルをBOM無しに変更しました。
今回はサクラエディタを利用してBOM無しに変更しましたがもっと楽な方法があるかもしれません。
BOM無しに変更して再度サイトにアクセスした所、画面真っ白エラー画面無く、正常にサイトが表示されました。

こちらも何故ローカルでは大丈夫だったかは不明です。。


以上で、無事真っ白画面エラーが解決出来ました。

毎度の事ですが、ローカル環境のWordPressを別環境に移行する際には必ずと言っていいほど問題が発生してます。

ただ、今回収穫があった事としては、BOM有りで保存してしまわないよう気をつける事、そしてプラグインの「Crazy Bone (狂骨)」は(本サイトでは)使わないようにするという事です。
特に前者はどのWordPressサイトにも言える事だと思いますので要注意。


まだまだWordPressは勉強不足です。