タグ: トラブルシューティング

  • WordPressサイトが真っ白に!そんな時チェックするべき項目4つ

    WordPressサイトが真っ白に!そんな時チェックするべき項目4つ

    こんにちは!

    giscoの代表をしております、takafumiと申します。
    WordPressサイトを運営している誰もが恐る現象、それが「画面真っ白」です。

    私もWordPress制作会社の新人時代、嫌というほどこの現象に遭遇し、画面だけでなく頭も真っ白になった事をよく覚えています。

    何をした結果、画面が真っ白になってしまったか分かっている場合は、単純に元へ戻せば良いのですが、パニックになってしまい「訳が分からない!」という事もあるかと思います。

    そんな時に行うべき、復旧するためのチェックポイントを見ていきましょう!

    1. wp_debugをtrueに

    WordPressには、あらかじめデバッグの機能が備わっています。
    WordPressをインストールしたディレクトリにあるwp-config.phpをエディターで開き、wp_debugという定数を探します。

    大抵は、70〜75行目あたりにある事が多いです。

     69 /**
     70  * 開発者へ: WordPress デバッグモード
     71  *
     72  * この値を true にすると、開発中に注意 (notice) を表示します。
     73  * テーマおよびプラグインの開発者には、その開発環境においてこの WP_DEBUG を使用することを強く推奨します。
     74  */
     75 define('WP_DEBUG', false);

    この定数がfalseになっている場合は、trueに変更する事でデバッグモードとなり、エラー内容が出力されますので原因が一発で突き止められます。

    define('WP_DEBUG', false);

    ↑これを、これ↓に変更。

    define('WP_DEBUG', true);

    あとは、表示されているエラー内容を読めば、プラグインのエラーなのか、テーマファイルの中に原因があるのか分かりますので、状況により対処するのみです。

    エラー内容を読んでも分からない?対処法がわからない?

    そんな場合は是非お問合せ下さい!

    2. サーバーのエラーログを確認

    上記作業をしても、画面に何も表示されない場合は、サーバーのエラーログを確認してみましょう。

    エラーログの場所は環境により様々ですので、レンタルサーバーであればコントロールパネルにログインして探してみて下さい。

    通常のLUMP環境であれば一般的には、/var/log/配下にあります。

    エラーログが見つかりましたら、エディタでファイルを開き最終行を確認します。

    WordPressはphpとMySQL環境で動作するCMSなので、Fatal errorにより画面が真っ白になっている可能性が高いです。

    最終行付近のFatal errorを探し、原因となっている箇所を修正すれば完了です。

    3. フィルターフックを外す

    フィルターフックとは、WordPressの挙動や、テーマ・プラグイン等が出力する内容を変更する事が出来る機能です。

    便利な反面、使い方を間違えると画面が真っ白になってしまう可能性があります。

    まずは、管理画面にログインし、WordPressのテーマをデフォルトのものに変更してみましょう。

    この作業で解消する場合は、変更前のテーマの中に原因があるという事が分かります。

    テーマを元に戻し、更に原因を探っていきます。

    大抵はfunctions.phpに追記した関数に何らかの記述ミスがある事が多いです。

    エディターでfunctions.phpを開き、add_filter、add_action(以降フィルターフックと記述します)と書かれている行を全てコメントアウトします。

    function custom_auto_post_slug( $slug, $post_ID, $post_status, $post_type ) {
      if ( $post_type == 'post' ) {
        $slug = $post_ID;
      }
      return $slug;
    }
    add_filter( 'wp_unique_post_slug', 'custom_auto_post_slug', 10, 4 );

    ↑これを、これに変更↓

    function custom_auto_post_slug( $slug, $post_ID, $post_status, $post_type ) {
      if ( $post_type == 'post' ) {
        $slug = $post_ID;
      }
      return $slug;
    }
    //add_filter( 'wp_unique_post_slug', 'custom_auto_post_slug', 10, 4 );
    //↑コメントアウトはスラッシュ2個です。

    上記はあくまでも例ですので、全てのadd_filterやadd_actionをコメントアウトしてください。

    この作業で画面真っ白現象が解消したら、次はコメントアウトをひとつずつ戻していき、「どのフィルターフックのコメントアウトを外した時に画面が真っ白になるか」を突き止めます。

    これにより、フィルターフックの中で行われている処理に問題があるところまでは分かりましたので、あとはvar_dump()などでデバッグしながら対応すれば完了です。

    対応方法が分からない…?
    そんな時は是非giscoにお問合せください!(二度目)

    (さらに…)