Как определить ОТЛАДКУ WP как истинную вне wp-config.php?


Я пытаюсь создать режим отладки в одном из моих плагинов, чтобы пользователи могли легко включить WP_DEBUG самостоятельно и, надеюсь, сообщить нам об этом с полезными сообщениями об ошибках. Прямо сейчас мы просим их изменить свои wp-config.php, но это выходит за рамки возможностей некоторых пользователей. Я надеялся просто добавить define( 'WP_DEBUG', true ); в наш плагин, если пользователь установил этот флажок, но, похоже, вы можете включить WP_DEBUG только из wp-config.php файл.

Кто-нибудь знает какой-нибудь способ включить WP_DEBUG из любого другого места, кроме wp-config? Или есть другая полезная функция WP, которую я мог бы использовать вместо этого?

Спасибо, Далтон

 9
Author: Dalton Rooney, 2012-03-28

5 answers

Логика WordPress заставляет WP_DEBUG быть определенным в что-то , даже если оно опущено, оно будет установлено в false в wp_initial_constants() во время загрузки.

Однако "фоновая" (то есть не тогда, когда она проверяется явно) функция WP_DEBUG должна быть флагом того, как следует настраивать отчеты об ошибках PHP во время выполнения. Эта конфигурация выполняется wp_debug_mode() и в любой момент после этого может быть изменен кодом вашего плагина, если это необходимо.

 6
Author: Rarst, 2020-01-07 14:18:50

Невозможно включить WP_DEBUG, потому что это определено в wp-config.php по умолчанию переопределение определенных констант в PHP невозможно.

Если вы хотите держать их подальше от wp-config.php попросите их добавить сверху что-то вроде:

if ( file_exists( 'safe-wp-config.php' ) ) {
    /* this will contains WP_DEBUG */
    include 'safe-wp-config.php';
}

Альтернативно,

WP_DEBUG предполагается, что false отсутствует, поэтому позвольте им полностью удалить WP_DEBUG из wp-config.php и использовать везде/когда им заблагорассудится.

 3
Author: soulseekah, 2012-03-28 12:22:06

Если у вас нет доступа к wp-config.php, но у вас есть доступ к редактору темы (или плагина), вы можете добавить фрагмент кода, чтобы по существу сделать то же самое, что и константа WP_DEBUG. Функция wp_debug_mode() использует значение этой и нескольких других констант для настройки функций отображения и регистрации ошибок в PHP. Вы можете запускать те же функции PHP напрямую, фактически касаясь константы WP_DEBUG или файла wp-config.php.

Вот ключевые функции PHP, которые может выполнять ваш фрагмент кода использование:

  • error_reporting( E_ALL ) - устанавливает PHP для отображения всех ошибок, предупреждений и уведомлений.
  • ini_set( 'display_errors', 1 ) - устанавливает PHP для отображения ошибок на экране; используйте 0 для подавления (хотя, если отладка не включена в wp-config.php, это уже будет 0, поэтому вы можете вообще опустить его).
  • ini_set( 'log_errors', 1) - устанавливает PHP для регистрации ошибок. Как и приведенное выше значение, это можно опустить, если вы не собираетесь регистрировать ошибки. Если вы регистрируете ошибки, вам понадобится журнал ошибок, к которому вы можете получить доступ. Значение по умолчанию, установленное wp_debug_mode(), будет недоступный. В моем примере он будет установлен в виде текстового файла в каталоге тем, чтобы вы могли прочитать его с помощью редактора тем.
  • ini_set( 'error_log', $log_path ) - задает местоположение журнала ошибок (упомянутого выше).

Вот фрагмент кода:

add_action( 'template_redirect', 'my_enable_debug_mode' );
function my_enable_debug_mode() {

    // Turn on error reporting.
    error_reporting( E_ALL );

    // Sets to display errors on screen. Use 0 to turn off.
    ini_set( 'display_errors', 1 );

    // Sets to log errors. Use 0 (or omit) to not log errors.
    ini_set( 'log_errors', 1 );

    // Sets a log file path you can access in the theme editor.
    $log_path = get_template_directory() . '/debug.txt';
    ini_set( 'error_log', $log_path );

}

Подводя итог, если вам нужно выполнить отладку, у вас нет доступа к wp-config.php, но у вас есть доступ к редактору тем, вы можете добавить этот фрагмент кода в файл functions.php, чтобы включить отладку на экране вместе с файлом журнала txt в папке темы.

 3
Author: butlerblog, 2020-05-18 18:48:36

Однако, если вы действительно хотите отображать ошибки, а не хранить их в файле журнала (как я хотел), то вы можете включить отладку для своего общедоступного IP-адреса следующим образом -

if ( $_SERVER['REMOTE_ADDR'] == 'xxx.xxx.xxx.xxx')
define('WP_DEBUG', true);

Проблем быть не должно, пока вы используете статический IP-адрес, но если у вас динамический IP-адрес, вы, вероятно, можете менять IP-адрес каждый раз, когда вам нужно включить debugigng.

 1
Author: Sachin Khosla, 2013-03-11 12:08:34

Я очень опаздываю на вечеринку. Однако у меня было требование, когда я должен был включить wp_debug, и у меня не было доступа к файлам. Этот плагин помог: https://wordpress.org/plugins/debug/

Может быть, вы можете сделать то же самое, что и плагин? Редактировать wp-config.php программно?

 1
Author: Arun Basil Lal, 2017-10-09 20:42:15