是否可以更改WP_DEBUG_LOG的日志文件位置?

时间:2013-02-01 作者:jjeaton

我在开发环境中使用WP\\u DEBUG\\u LOG,没有调试问题。日志位于wp内容目录中。

有时,当我需要调试某些内容时,我会在生产环境中打开WP\\u DEBUG,我仍然希望使用日志,但希望将其重定向到web根目录以外的内容。是否可以使用WP\\U DEBUG\\U日志?

6 个回复
最合适的回答,由SO网友:jjeaton 整理而成

事实证明,WP\\u DEBUG\\u LOG所做的全部工作是:

ini_set( \'log_errors\', 1 );
ini_set( \'error_log\', WP_CONTENT_DIR . \'/debug.log\' );
因此,如果要在插件或主题中更改WP\\u DEBUG\\u log的日志位置,webaware\'s answer 是最好的。如果你只想在wp-config.php 您可以替换define( \'WP_DEBUG_LOG\', true ); 使用以上两行,并将日志文件更改为任何您想要的位置。

SO网友:Carl Alberto

对于WP 5.1版及以上版本,这里的大多数答案似乎不再正确,因为发生了以下变化:https://make.wordpress.org/core/2019/01/23/miscellaneous-developer-focused-changes-in-5-1/

现在可以定义WP_DEBUG_LOG 作为中的路径wp-config.php 如果要覆盖默认值wp-content/debug.log 例如:

define( \'WP_DEBUG_LOG\', \'wp-content/uploads/debug.log\' );

SO网友:webaware

是的,如果您向插件或主题函数添加一些代码。php类似:

if (defined(\'WP_DEBUG_LOG\') && WP_DEBUG_LOG) {
    ini_set( \'error_log\', WP_CONTENT_DIR . \'/debug.txt\' );
}
编辑:其他人刚刚向我提出了这样做的需要,所以我把一些代码放到了一个简单的插件中,他们可以编辑;它可以作为gist 如果有人想要的话。

SO网友:Michael Teter

时代在变,技术问题的正确答案也在变。

截至2019年末,目前的答案很简单。在WP config中定义WP\\U DEBUG\\U日志“常量”时。php,您现在可以提供一个要在其中写入文件的路径。

define( \'WP_DEBUG_LOG\', \'/tmp/wp-errors.log\' );

看见Wordpress Support Documentation

SO网友:David F. Carr

自上次发布此问题的答案以来,WordPress代码似乎已更改。与这些常量相关的当前wp\\u debug\\u mode()函数包括一个测试,测试wp\\u debug\\u LOG是否等于true或1,在这种情况下,它的行为与其他人所描述的一样。

但是,您也可以将该常量设置为字符串(您首选的文件路径),日志将在那里输出。例如,您可以将其设置为可公开访问的web内容的目录之外的路径。您可能需要使用文件权限才能使其正常工作。

我来寻找这个答案是因为WordFence安全插件抱怨我的调试日志可能在/wp内容中被访问/

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; }

SO网友:kaiser

好了,您不能更改默认调试文件的位置。您可以更改的是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\' );

结束