回答:
WP_DEBUG_LOGが行うことはすべて次のとおりです。
ini_set( 'log_errors', 1 );
ini_set( 'error_log', WP_CONTENT_DIR . '/debug.log' );
そのため、プラグインまたはテーマでWP_DEBUG_LOGのログの場所を変更する場合は、Webawareの答えが最適です。単に変更したい場合は、上記の2行にwp-config.php
置き換えdefine( 'WP_DEBUG_LOG', true );
て、ログファイルを任意の場所に変更できます。
この変更はhttps://make.wordpress.org/core/2019/01/23/miscellaneous-developer-focused-changes-in-5-1であるため、ここの回答はWPバージョン5.1以降には当てはまらないようです。 /
たとえばWP_DEBUG_LOG
、デフォルトをオーバーライドする場合は、パスとして定義できますwp-content/debug.log
。
define( 'WP_DEBUG_LOG', 'wp-content/uploads/debug.log' );
はい、プラグインまたはテーマのfunctions.phpにコードを追加する場合:
if (defined('WP_DEBUG_LOG') && WP_DEBUG_LOG) {
ini_set( 'error_log', WP_CONTENT_DIR . '/debug.txt' );
}
編集:他の誰かがこれを行う必要があることを教えてくれたので、編集可能なシンプルなプラグインにコードを落としました。必要に応じて要点として利用できます。
この質問に対する最後の回答が投稿されてから、WordPressコードが変更されたようです。これらの定数に関連する現在のwp_debug_mode()関数には、WP_DEBUG_LOGがtrueまたは1に等しいかどうかのテストが含まれます。この場合、他の人が説明したように動作します。
ただし、その定数を文字列(優先ファイルパス)に設定することもでき、ログはそこに出力されます。たとえば、パブリックにアクセス可能なWebコンテンツのディレクトリ外のパスに設定できます。それを機能させるには、ファイルのアクセス許可を試す必要があります。
WordFenceセキュリティプラグインが/ wp-content /でデバッグログにアクセスする可能性があると文句を言っているので、この答えを探しました。
if ( in_array( strtolower( (string) WP_DEBUG_LOG ), array( 'true', '1' ), true ) ) {
$log_path = WP_CONTENT_DIR . '/debug.log';
} elseif ( is_string( WP_DEBUG_LOG ) ) {
$log_path = WP_DEBUG_LOG;
} else {
$log_path = false;
}
Afaik、デフォルトのデバッグファイルの場所を変更することはできません。変更できるのは、MUエラーログの場所とPHPエラーログファイルの場所です。
$ds = DIRECTORY_SEPARATOR;
# DEBUG
define( 'WP_DEBUG', true );
// file: ~/WP_CONTENT_DIR/debug.log
define( 'WP_DEBUG_LOG', true );
define( 'WP_DEBUG_DISPLAY', true );
define( 'SAVEQUERIES', true );
# DEBUG: MU
define( 'DIEONDBERROR', true );
define( 'ERRORLOGFILE', WP_CONTENT_DIR.$ds.'logs'.$ds.'mu_error.log' );
@ini_set( 'log_errors', 'On' );
# PHP Error log location
@ini_set( 'error_log', WP_CONTENT_DIR.$ds.'logs'.$ds.'php_error.log' );