WordPressで不具合等が出て原因を特定する際にWP_DEBUGを利用してデバッグモードにすることがあると思いますが、そのまま利用すると公開しているページにもエラー内容が表示されてしまいます。
非公開サイトやローカル環境など自分だけしか見えない状況であれば良いのですが、既に本番公開されているような場合にエラー内容をページ上には出さずに確認できるようにする方法です。
デバッグモードを有効化する
デバッグモードを有効化する際には、まずwp-config.php
で70行目辺りから始まる下記のような記述を見つけます。
/**
* 開発者へ: WordPress デバッグモード
*
* この値を true にすると、開発中に注意 (notice) を表示します。
* テーマおよびプラグインの開発者には、その開発環境においてこの WP_DEBUG を使用することを強く推奨します。
*/
define( 'WP_DEBUG', false );
該当箇所を見つけたら、define( 'WP_DEBUG', false );
となっているところをdefine( 'WP_DEBUG', true );
に変更することでデバッグモードが有効化されます。
開発やエラー確認などを行っていき必要なくなった場合は、変更した部分を再度false
にしておけばデバッグモードを無効化できます。
ログファイルに出力させる
define( 'WP_DEBUG', true );
にすることでデバッグモードを有効化できますが、このままだとエラー内容がページ上にも表示されてしまいます。
本番で稼働している場合などエラーをページ上に出したくないという場合は、wp-config.php
に下記のように記述してあげることでエラー内容が記述されたログファイルを出力することができます。
define( 'WP_DEBUG', true );
if ( WP_DEBUG ) {
define( 'WP_DEBUG_LOG', true );
define( 'WP_DEBUG_DISPLAY', false );
@ini_set( 'display_errors', 0 );
}
上記を記述することで/wp-content/
にdebug.log
というファイルが出力され、そこでエラー内容を確認することが可能になります。
もし、上記を記述してもログファイルが出力されないという場合は、空のdebug.log
を/wp-content/
に作成したり、あとはパーミッションで書き込み可能になっているかどうか確認をしてください。
ただ、このままだと例えばhttp://example.com/wp-content/debug.log
などのように、debug.log
までのパスを指定すれば簡単にエラーログの中身を見ることができてしまいます。
特にエラーログを取るのが一時的ではなく長期間取る場合は見られるといろいろとあれなので、その場合はアクセス制限するなど簡単に確認できないようにしておくと良いと思います。
手っ取り早くできるものとしては、.htaccess
に下記のように記述すればdebug.log
へアクセスさせないようにすることができます。
<Files debug.log>
Order allow,deny
Deny from all
</Files>