Можно ли изменить расположение файла журнала для WP_DEBUG_LOG?

1 февр. 2013 г., 21:43:33
Просмотры: 33.5K
Голосов: 28

Я использую WP_DEBUG_LOG в среде разработки, и у меня нет проблем с тем, что debug.log находится в директории wp-content.

Иногда я включаю WP_DEBUG на продакшене, когда мне нужно что-то отладить, и я по-прежнему хочу использовать лог, но хотел бы перенаправить его куда-то за пределы корневой веб-директории. Возможно ли это сделать с помощью WP_DEBUG_LOG?

0
Все ответы на вопрос 7
0
23

Похоже, большинство ответов здесь уже неактуальны для версии 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' );
14 мая 2019 г. 21:25:23
3
22

Оказывается, что 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 ); на две вышеуказанные строки и указать путь к файлу лога, куда вам нужно.

3 февр. 2013 г. 01:01:30
Комментарии

Прошло пару лет, и я не могу заставить файл заполняться ошибками, если он не находится в папке контента WordPress.

Mike Kormendy Mike Kormendy
29 янв. 2017 г. 07:39:50

@MikeKormendy - это может быть проблема с правами на директорию. Место, куда вы хотите записать файл, должно быть доступно для записи пользователю, который является владельцем процесса PHP. Проще говоря, убедитесь, что новая директория для файла имеет такие же права, как и папка wp-content.

Michael Teter Michael Teter
23 дек. 2019 г. 18:54:03

У меня это возвращает ошибку 500(

skywind skywind
4 окт. 2021 г. 13:13:33
0

Времена меняются, и правильные ответы на технические вопросы тоже.

Текущий ответ, актуальный на конец 2019 года, прост. При определении "константы" WP_DEBUG_LOG в файле wp-config.php, теперь можно указать путь, куда должен записываться файл.

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

Смотрите Документацию поддержки WordPress

23 дек. 2019 г. 18:38:16
4

Да, если вы добавите следующий код в плагин или файл functions.php темы:

if (defined('WP_DEBUG_LOG') && WP_DEBUG_LOG) {
    ini_set( 'error_log', WP_CONTENT_DIR . '/debug.txt' );
}

Примечание: кто-то недавно обратился ко мне с необходимостью сделать это, поэтому я добавил код в простой плагин, который можно редактировать; он доступен как gist, если кому-то понадобится.

2 февр. 2013 г. 03:38:32
Комментарии

Я попытался добавить это в свой файл wp-config.php, но это не сработало. Может быть, потому что wp-config.php загружается раньше, чем фактическое место в коде, где используется WP_DEBUG_LOG для определения файла журнала?

jjeaton jjeaton
3 февр. 2013 г. 00:25:11

Мне удалось заставить это работать, добавив код в mu-плагин. Есть ли способ сделать это изменение только в wp-config? Я предполагаю, что мне просто нужно установить WP_DEBUG_LOG в false и самостоятельно заменить его функционал?

jjeaton jjeaton
3 февр. 2013 г. 00:27:59

Это хорошо работает, если вы можете поместить код в плагин или тему, спасибо!

jjeaton jjeaton
3 февр. 2013 г. 01:02:06

Да, просто добавьте его в простой плагин. Смотрите Создание плагина в кодексе.

webaware webaware
3 февр. 2013 г. 01:04:24
0

Похоже, что код WordPress изменился с момента публикации последнего ответа на этот вопрос. Текущая функция wp_debug_mode(), связанная с этими константами, включает проверку, соответствует ли WP_DEBUG_LOG значению true или 1 — в таком случае она ведет себя так, как описано другими.

Однако, вы также можете установить эту константу в строку — предпочитаемый путь к файлу — и журнал будет выводиться туда. Например, вы можете указать путь за пределами каталогов с общедоступным веб-контентом. Возможно, придется настроить права доступа к файлу, чтобы это заработало.

Я искал этот ответ, потому что плагин безопасности 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; }

8 мар. 2019 г. 00:50:47
2

Насколько мне известно, изменить расположение файла отладки по умолчанию нельзя. Однако можно изменить расположение лога ошибок MU, а также расположение файла лога ошибок PHP.

$ds = DIRECTORY_SEPARATOR;
# ОТЛАДКА
define( 'WP_DEBUG',               true );
// файл: ~/WP_CONTENT_DIR/debug.log
define( 'WP_DEBUG_LOG',           true );
define( 'WP_DEBUG_DISPLAY',       true );
define( 'SAVEQUERIES',            true );
# ОТЛАДКА: MU
define( 'DIEONDBERROR',           true );
define( 'ERRORLOGFILE',           WP_CONTENT_DIR.$ds.'logs'.$ds.'mu_error.log' );

@ini_set( 'log_errors',           'On' );
# Расположение лога ошибок PHP
@ini_set( 'error_log',            WP_CONTENT_DIR.$ds.'logs'.$ds.'php_error.log' );
1 февр. 2013 г. 21:57:27
Комментарии

Значит, мне нужно отключить WP_DEBUG_LOG, чтобы убедиться, что файл debug.log никогда не создается в моей директории wp-content?

jjeaton jjeaton
1 февр. 2013 г. 21:59:01

Ты задаешь довольно много вопросов для этого времени суток :) Сейчас мой мозг не в том состоянии, чтобы на них отвечать. Возвращайся завтра и заходи в чат.

kaiser kaiser
1 февр. 2013 г. 22:47:02
0

У меня была такая проблема. Я решил её, добавив следующее в wp-config:

define('WP_DEBUG', true);
define( 'WP_DEBUG_DISPLAY', false );
define( 'WP_DEBUG_LOG', '/var/log/wp-debug.log' );

Затем изменил владельца файла wordpress-debug.log:

chown -R www-data:www-data /var/log/wp-debug.log

В моём случае это была проблема с правами доступа. Использование chown для установки прав владельца файла на пользователя/группу WordPress решило проблему.

7 июл. 2023 г. 06:51:25