環境
- PHP8.2
- WordPress 6.0
現状
WordPressのユーザ、グループはapacheに設定されており、wp-config.phpには以下の記載をしてますが、debug.logが出力されません。
1 2 3 4 5 6 7 8 9 | // デバッグモードを有効にする define( 'WP_DEBUG' , true ); // デバッグログを /wp-content/debug.log に出力 define( 'WP_DEBUG_LOG' , true ); // 画面にはエラー、ワーニングを表示しない define( 'WP_DEBUG_DISPLAY' , false ); @ ini_set ( 'display_errors' , 0 ); |
wp-content/の権限を777にしてみましたが変化有りませんでした。
対応
php-fpmの設定ファイル/etc/php-fpm.d/www.confを見るとログの出力先は以下のようになってます。確認したところ、WordPressのログも/var/log/php-fpm/www-error.logに出力されていました。
1 2 | php_admin_value[ error_log ] = / var /log/php-fpm/www-error.log php_admin_flag[log_errors] = on |
上記2行をコメントアウトして、php-fpmとapacheを再起動したところ、debug.logが出力されるようになりました。
1 2 | ; php_admin_value[ error_log ] = / var /log/php-fpm/www-error.log ; php_admin_flag[log_errors] = on |
1 2 | sudo service php-fpm restart sudo service httpd restart |
おまけ
せっかくdebug.logが出力されるように設定しましたが、debug.logはデフォルトで/wp-content/に出力されるため、誰でもブラウザから見れてしまいます。
URL
https://ドメイン名/wp-content/debug.log
/var/log/php-fpm/www-error.logに出力された場合、ブラウザからは閲覧できません。ですので、セキュリティ的にはもとの設定のままで良かったですね。
ちなみにvar_dump()ではなくログ出力したいケースは、主にAJAXです。AJAXの場合var_dump()しても画面には出力されませんからね。
以下をfunctions.phpに追加するとログ出力できるようになります。
1 2 3 4 5 6 7 8 9 | function log_me( $message ) { if (WP_DEBUG === true) { if ( is_array ( $message ) || is_object ( $message )) { error_log (print_r( $message , true)); } else { error_log ( $message ); } } } |
呼び出すときは以下のようにします。
1 | log_me(get_categories()); |
ログ出力は以下を参考にさせていただきました。

10 Things Every WordPress Plugin Developer Should Know — Smashing Magazine
Plugins are a major part of why WordPress powers millions of blogs and websites around the world. The ability to extend ...