Answers:
事实证明,WP_DEBUG_LOG所做的全部是:
ini_set( 'log_errors', 1 );
ini_set( 'error_log', WP_CONTENT_DIR . '/debug.log' );
因此,如果要在插件或主题中更改WP_DEBUG_LOG的日志位置,则Webaware的答案是最好的。如果您只想在其中进行更改,则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' );
时间在变化,所以对技术问题的正确答案也应如此。
截至2019年末的当前答案很简单。现在,在wp-config.php中定义WP_DEBUG_LOG“ constant”时,您可以提供要写入文件的路径。
define( 'WP_DEBUG_LOG', '/tmp/wp-errors.log' );