以前、WordPress におけるテスト環境の作り方を書きました。
テスト環境を作成した後は、「本番環境」と「検証用途としてのテスト環境」の2つの環境が存在する状態となります。テスト環境は文字通りテストを行う環境となり、一般のアクセスはありません。そこで、テスト環境上では WordPress に関するエラーなどを早期発見できるよう、デバッグモードを有効化しておくことをおすすめします。
エラー解消がどうしてもできず、エラーが表示されると崩れてしまう場合等は状況に応じてデバッグモードを無効化にしておくなどしましょう。
ここでは、開発環境・検証環境においても同様にテスト環境としてみなしています。
目次
WordPress のデバッグモードとは
WordPress ではエラーが発生した場合はエラーのレベルにより実行が中断されたり、実行はされるものの構文に問題が有り適切に処理できなかったり、警告としてエラーを表示したりというケースと、表面上にエラー内容を出力しないものの将来的にエラーになりえるといった軽微なエラーのケースがあります。
エラー内容にはサーバーのパス情報やファイル名等セキュリティリスクになり得る情報が含まれているため、関係者以外には見えないのが望ましいです。
ただ、エラーが発生した場合はエラーを解消するデバッグ作業を行う必要があり、デバッグをするにはエラー内容を表示・確認することでエラー詳細を知ることができます。
このエラー詳細を表示するために、WordPress にはデバッグモードを有効化するための設定があります。デバッグモードを有効化すると、PHP や WordPress コア、プラグイン、テーマといった様々な範囲のエラー内容を画面に表示してくれます。将来の PHP で非推奨となることがわかっている関数についても教えてくれるため、PHP の更新前には確認しておくことをお勧めします。
この画像で隠している場所にファイル名やパス情報が記載されています。誰でもアクセスできる本番環境に表示されているのは避けるべきです。セキュリティリスクのため、デバッグモードは本番環境ではなるべく無効化のままとし、テスト環境で有効化するようにしましょう。本番環境でデバッグを行う場合は後述の方法を参考にしてください。
WordPress のデバッグモードの設定方法
WordPress の構成ファイルの中に、「wp-config.php」という WordPress の設定ファイルがあります。
ファイルをテキストエディタで開きます。日本語版をダウンロードしていると、最後の方に「編集が必要なのはここまでです ! WordPress でブログをお楽しみください」という文字が書いてあるはずです。通常であればその直上や付近に define('WP_DEBUG', false);
と書かれているはずです。
false
を true
に変更し、保存するとデバッグモードが有効化されます。これだけでとても簡単です。
エラー非表示(デバッグモード無効): define('WP_DEBUG', false);
エラー表示(デバッグモード有効): define('WP_DEBUG', true);
保存後、エラーが表示されているかトップページや各ページ、また管理画面内の各ページにアクセスしてみましょう。何も表示されていなければ、現時点で発生しているエラーはありません。
ちなみに、あえてプラグインを古いバージョンにダウングレードし、エラーを表示させてみるとこんな感じに表示されます。今回は管理画面に Deprecated エラーが表示されました。
本番環境でデバッグモードを有効化したいときは
上の画像にもある通り、wp-config.php 内にデバッグモードの説明と注意書きがあります。
開発者へ: WordPress デバッグモード
http://wpdocs.osdn.jp/WordPress%E3%81%A7%E3%81%AE%E3%83%87%E3%83%90%E3%83%83%E3%82%B0
この値を true にすると、開発中に注意 (notice) を表示します。
テーマおよびプラグインの開発者には、その開発環境においてこの WP_DEBUG を使用することを強く推奨します。
その他のデバッグに利用できる定数については Codex をご覧ください。
「開発者へ」と書かれているため「自分には関係ないや」と思いがちですが、エラー対処を行う人はこの文章を注意してみる必要があります。デバッグモードは開発環境で使用することを強く推奨とかかれており、これは本番環境で利用しないほうがいいことを意味します。
ただ、どうしても本番環境でしか再現できないエラーなどがあると思います。そういったときは、「デバッグのログ出力」と「ページに出力しない」設定を行うことで表面上はエラー内容が表示されずにログファイルに出力されるようになります。どちらもデバッグモードを有効化した上で( define('WP_DEBUG', true);
の状態)、wp-config.php ファイルに追記します。
デバッグのログ出力は WP_DEBUG_LOG を true
define('WP_DEBUG_LOG', true);
と追記します。これにより、ログが発生すると debug.log ファイルが生成され、ログファイル内にエラー内容が出力されます。あとから確認するときにも便利です。ファイルが生成される場所はテーマやプラグイン等が配置されている wp-content 配下です。
ちなみに、false
にするとログ出力されません。
ページに出力しないようにするには WP_DEBUG_DISPLAY を false
define('WP_DEBUG_DISPLAY', false);
と追記します。これにより、エラーが発生してもページ内にHTML出力されません。エラー内容をログファイルに出力するように設定しているのと組み合わせて利用します。
true
にするとページにエラーが出力されます。
本番環境でエラー内容を表に出さずにログファイルに出力するようにまとめると以下となります。
define('WP_DEBUG', true); // エラーを表示するには true
define( 'WP_DEBUG_LOG', true ); // ログファイルに出力するには true
define( 'WP_DEBUG_DISPLAY', false ); // エラー内容を画面に出力しないようにするには false
エラー内容を把握し、安心できる WordPress 運営を
WordPress のデバッグモードの表示方法についての説明でした。テスト環境を構築したら是非デバッグモードは有効にしておき、いち早くエラーに気づける体制を作っておくことが安心した運営に繋がります。
「デバッグモードを有効にできるテスト環境がなく本番環境だけしかない」という場合だと、WordPress 本体や利用しているプラグイン、PHP といった更新を行ったタイミングで最悪の場合は致命的なエラーでサイトにアクセスができなくなってしまう可能性もあります。
テスト環境は本番環境とできるだけ同一の環境を再現するのが望ましいです。同一サーバー内に構築するテスト環境の構築方法は以下をご参考ください。
WordPress 保守管理サポートでは、テスト環境の構築を含め、一部対応を含めたエラーの確認も行っています。安全に WordPress を運営したいという場合はお気軽にご相談ください。
ちなみに、「エラーメッセージを表示させず、見えないようにしたい」という場合は以下をご参考ください。
WordPress で PHP エラーメッセージを非表示にしたい時
コメントを残す