Wp debug


В предыдущей части мы создали WordPress-проект и приступили к редактированию кода. Теперь поговорим о том, как выявить и исправить ошибки в созданном коде.

Рабочий публичный сервер должен быть настроен так, чтобы сообщения об ошибках вообще не выводились — из соображений безопасности, да и просто из эстетических соображений. Вывод ошибок можно запретить на уровне сервера (в php.ini), а также на уровне скрипта (с помощью функций ini_set() и error_reporting()). Например, чтобы гарантировано подавить вывод ошибок на вашем WordPress-сайте в независимости от настроек сервера, в wp-config.php надо добавить:

define('WP_DEBUG', false); @ini_set('display_errors', 0);

Теперь в случае ошибки посетитель увидит страницу Internal Server Error.

При разработке же все наоборот — вывод ошибок очень важен и полезен. Поэтому на сервере, используемом для разработки, вывод ошибок обязательно включаем (php.ini : display_errors = 1).


Zend Server вывод ошибок включается через панель управления Server Setup -> Directives -> Error Handling and Logging -> display_errors поставить On. Там же устанавливаем значение директивы error_reporting = E_ALL & ~E_NOTICE & ~E_STRICT (вывод всех ошибок и предупреждений, кроме уведомлений). E_NOTICE и E_STRICT — это некритичные уведомления о соблюдении стандартов кодирования, они не влияют на работоспособность кода. Подробнее об уровнях ошибок.

Теперь возвращаемся к wp-config.php. По умолчанию режим отладки отключен:

define('WP_DEBUG', false);

Но это не значит, что ошибки не выводятся.
На самом деле error_reporting = E_ALL & ~E_NOTICE & ~E_USER_NOTICE.

Включение режима отладки:

define('WP_DEBUG', true);

означает error_reporting = E_ALL (вывод вообще всех ошибок и уведомлений), также на экран будут выводиться ошибки SQL-запросов.

Итак, что в итоге?

Для вывода фатальных ошибок и предупреждений достаточно значения по умолчанию:

define('WP_DEBUG', false);

Если вывод ошибок отключен на уровне сервера, то его можно включить на уровне скрипта:

@ini_set('display_errors', 1);

Когда нужен вывод ошибок SQL, и для устранения мелких погрешностей кода (вот здесь будут полезны уведомления), используем режим отладки:


define('WP_DEBUG', true);

Отключение вывода ошибок на экран, но при этом запись ошибок в лог-файл (wp-content/debug.log):

define('WP_DEBUG', true); define('WP_DEBUG_LOG', true); define('WP_DEBUG_DISPLAY', false); @ini_set('display_errors', 0);

Еще один момент, который стоит учитывать — некоторые WordPress-плагины могут без всякого предупреждения вмешаться в процесс вывода ошибок. Например известный плагин WP-SpamFree полностью подавляет вывод ошибок не смотря на значение константы WP_DEBUG. Явный симптом error_reporting(0) — белый экран, вместо сообщения об ошибке.

Явные ошибки — найти и устранить легче всего. В тексте ошибки обычно указывается имя файла и номер строки, где произошла ошибка. Другое дело, когда явных ошибок нет, но код работает не так как вы планировали. Вот здесь уже нужен отладчик (debugger). Читайте далее: Отладка кода WordPress-проетка с помощью Zend Debugger и Eclipse PDT.

www.q2w3.ru

Отладка WordPress: 11 хороших советов и техник


От автора: для разработчика крайне важно уметь отлаживать код. В этом уроке я расскажу вам про 11 способов по отладке WordPress и ошибок PHP. Первым в списке стоит знаменитый WP_Debug, после чего мы переключимся на более продвинутые методы.

Сначала давайте приведем типы распространенных ошибок в PHP:

1 – константа WP_DEBUG

В WP существует глобальная константа, с помощью которой можно производить отладку на определенном уровне – WP_DEBUG. Вместе с этой константой идут и две другие не менее важные — WP_DEUBG_DISPLAY и WP_DEBUG_LOG.

С помощью WP_DEBUG можно включать и выключать режим отладки. WP_DEUBG_DISPLAY прячет и показывает ошибки. WP_DEBUG_LOG сохраняет ошибки в wp-content/debug.log. Задать true или false для этих трех констант можно в файле wp-config.php:

2 – метод is_wp_error()

Также для отладки в WP можно воспользоваться методом is_wp_error();. Данный метод проверяет передаваемое значение на тип WP_Error. WP_Error – объект, который можно получить в случае неудачного выполнения метода. Пример:

Код выше пытается добавить новую статью с помощью метода wp_insert_post(). Если метод не отработает, нам вернется объект WP_Error. Данный объект можно поймать и вытянуть из него сообщение об ошибке.

3 – плагин Debug Bar

Для отладки ошибок в WP можно воспользоваться плагином Debug Bar. С помощью этого полезного инструмента можно получить информацию по всем страницам сайта.


После установки у вас появится новая кнопка для отладки. По клику на нее можно провести анализ запросов, шаблонов, PHP установок и т.д.

4 – тестовый сайт

Крайне важно иметь несколько копий сайта: настоящую, тестовую и для разработки. У меня обычно есть две установки WP на один сайт. Это очень важно, ведь вы не хотите, чтобы ваши скрипты прекращали работу, как только вы включили сообщения об ошибках.

5 – плагин Simply Show Hooks

Simply Show Hooks – плагин, показывающий все хуки, которые есть на странице. Если у вас возникла такая ситуация, когда все отчеты не находят ошибку, то вам придется вылавливать все запущенные хуки.

С помощью данного плагина можно посмотреть все запущенные на странице экшены и фильтры. Код каждого хука можно проанализировать и отладить. Также плагин позволяет определить приоритет хуков.

6 – отчет об ошибках WPDB

Если для работы с базой данных вы используете класс wpdb, вам понадобится отчет об ошибках. Не важно, будет ли это просто проверка правильности работы запросов или отображение сообщений об ошибках. Пример:

7 – логи ошибок сервера

На каком-то этапе ни WP ни PHP не смогут отловить ошибки в коде. К примеру, если скрипт превысил максимальное время выполнения, PHP не выдаст ошибку. А вот Apache (или другой сервер) выдаст что-то типа «Internal Server Error». В такой ситуации нужно открыть файл логов с ошибками и посмотреть, где же закралась ошибка: в PHP или в WP. Узнать, где хранятся логи можно у провайдера хостинга. Обычно папка называется logs.


8 – логи ошибок PHP

В PHP есть свой уровень сообщений об ошибках. Очень полезная штука, особенно если запускается что-то не из WP и вызывает ряд каких-то проблем. Включить логи об ошибках и указать место их хранения можно в файле php.ini.

Строки выше включают отчеты об ошибках и задают специальный путь для хранения. Также можно запустить функцию phpinfo() и проверить error_log.

9 – проверка синтаксиса PHP

Если ваш хостинг-провайдер ограничил доступ к файлу php.ini, или у вас нет доступа к логам ошибок, ситуация немного усложняется. Однако в сети полно инструментов для решения проблемы, когда перед вами пустая страница, а ошибок нет. Один из таких инструментов — PHP Code Checker.

PHP Code Checker – инструмент для проверки ошибок синтаксиса. Он находит пропущенные точки с запятой и фигурные скобки – очень удобная штука.

10 – PHP IDE

Если PHP Code Checker не нашел ошибок в синтаксисе, нужно прибегнуть к более мощному инструменту. Мощная среда разработки типа PhpStorm подойдет для более продвинутой отладки и разобьет ваш код на части.

Эта IDE помогает в таких ситуациях, когда вы пытаете распечатать переменную, в которой хранится какая-то строка, но ничего не происходит. Быть может, где-то в коде вы переписываете эту переменную. Очень важно работать в мощной среде разработки типа PhpStorm, Eclipse или другой.


11 – отключение кэша браузера

Если вы работаете на front-end’е сайта, тогда вам нужно отключить кэш в браузере. Это обязательный шаг, так как если вы работаете с JS кодом, а он не обновлен или обновлен, но не показывает ошибок, что еще хуже, вам придется отключить кэш.
Отключение кэша говорит браузеру, чтобы тот больше не работал со старыми файлами сайта, которые хранятся на вашем жестком диске. Это относится к файлам CSS и JS.

Чтобы отключить кэш в браузере Chrome, откройте панель разработчика, кликнув правой кнопкой мыши по любому элементу страницы. Перейдите во вкладку сеть. Поставьте галочку на пункте Disable Cache вверху.

webformyself.com

Отладка с помощью WP_DEBUG

Основное средство разработки, о котором вам нужно знать — WP_DEBUG.

WP_DEBUG — это константа типа boolean, которая включает режим отладки в WordPress. Она находится в файле wp-config.php в вашей папке WordPress.

Если ее значение установлено «true», вы увидите извещения PHP на страницах сайта (не столько ошибки, сколько полезные для разработчиков сообщения и WordPress сообщения, в частности информация об устаревших функциях).

Устаревшие функции содержатся во многих релизах WordPress. Важно знать, используете ли вы устаревшую функцию в теме или плагине, над которыми вы работаете, чтобы найти ее замену.


Чтобы включить WP_DEBUG, просто добавьте следующий код в ваш файл wp-config.php:

define( 'WP_DEBUG', true );  

Чтобы отключить режим, просто замените «true» на «false». Для WP_DEBUG по умолчанию установлено значение false. WP_DEBUG предоставляет удобный способ поиска решения проблем, если что-то с вашим сайтом пошло не так.

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

Записи ошибок с помощью WP_DEBUG_LOG

Другой удобный инструмент — WP_DEBUG_LOG, который может использоваться в сочетании с WP_DEBUG для сохранения всех ошибок в файл debug.log, размещенный в папке /wp-content/ вашего сайта.

Это очень удобная штука, если вы хотите потом просмотреть сообщения.

Чтобы включить запись логов отладки, просто добавьте в ваш файл wp-config.php следующий код:

define('WP_DEBUG_LOG', true);  

Выключение отображения ошибок на сайте с помощью WP_DEBUG_DISPLAY

Если вы не хотите, чтобы ошибки отображались на вашем сайте, вы должны использовать WP_DEBUG_DISPLAY.

Это еще одна полезная константа, которая позволяет вам выбирать, будут ли отладочные сообщения отображаться внутри HTML вашего сайта.

По умолчанию установлено значение «true», то есть все ошибки и предупреждения отображаются. Изменив значение на «false», вы спрячете все ошибки.

Эта константа должна быть использована в сочетании с WP_DEBUG_LOG.


Чтобы использовать эту возможность, просто добавьте в код вашего файла wp-config.php следующую строку:

define('WP_DEBUG_DISPLAY', false);

Все вместе

Эти три константы легко использовать вместе, если вы хотите включить отладку и запись логов сообщений об ошибках, но хотите скрыть уведомления на вашем сайте:

// Turn debugging on  define('WP_DEBUG', true);    // Tell WordPress to log everything to /wp-content/debug.log  define('WP_DEBUG_LOG', true);    // Turn off the display of error messages on your site  define('WP_DEBUG_DISPLAY', false);    // For good measure, you can also add the follow code, which will hide errors from being displayed on-screen  @ini_set('display_errors', 0);

Не забывайте, что WP_DEBUG используется для локальной разработки и не должен использоваться на живых сайтах.

hostenko.com

There’s this excellent Q&A at WordPress Stack Exchange, lots of knowledgeable folks explaining their debugging techniques: How do you debug plugins?

In the Javascript arena you basically need <script>console.log('the value is' + variable);</script>


. And use Google Chrome inspector and/or Firebug.

In PHP, it depends on where things are happening or where you want the output.


Debugging in WordPress

Oficial documentation in the Codex.

Example wp-config.php for Debugging

// Enable WP_DEBUG mode define( 'WP_DEBUG', true );  // Enable Debug logging to the /wp-content/debug.log file define( 'WP_DEBUG_LOG', true );  // Disable display of errors and warnings  define( 'WP_DEBUG_DISPLAY', false ); @ini_set( 'display_errors', 0 );  // Use dev versions of core JS and CSS files (only needed if you are modifying these core files) define( 'SCRIPT_DEBUG', true ); 

Printing information to a log file

The following uses an OSX/Unix/Linux system path, adjust for Windows.

/* Log to File  * Description: Log into system php error log, usefull for Ajax and stuff that FirePHP doesn't catch  */ function my_log_file( $msg, $name = '' ) {  // Print the name of the calling function if $name is left empty  $trace=debug_backtrace();  $name = ( '' == $name ) ? $trace[1]['function'] : $name;   $error_dir = '/Applications/MAMP/logs/php_error.log';  $msg = print_r( $msg, true );  $log = $name . " | " . $msg . "n";  error_log( $log, 3, $error_dir ); }   

Then, in you code call the function my_log_file( $post, 'The post contents are:' );


Print directly in the rendered Html

/* Echo variable  * Description: Uses <pre> and print_r to display a variable in formated fashion  */ function echo_log( $what ) {  echo '<pre>'.print_r( $what, true ).'</pre>'; } 

And wherever needed use it like: echo_log( $post );.


stackoverflow.com

Home Brewed Debugging

PHP comes with some pretty awesome functions for debugging built right in. If you understand these PHP functions you can get the exact information you want if WordPress doesn’t give it to you for any reason. On top of that, these functions are a good place to start a discussion about debugging, so that’s what we will do.

print_r( … )

The print_r( … ) function prints information about a variable in human readable form. This is especially useful when dealing with arrays. An example usage can be found below:

The output for this code (tested on Compile Online) would look like:

print_r-Example

The print_r( … ) function can also be passed a second boolean parameter, which will then output the results of the print_r( … ). This can be used to save the results for whatever purpose you want. An example can be seen below:

This gives the same output as the first example given. However, you can use that variable for whatever you want – not just output. This gives print_r( … ) much more flexibility by saving the output as a variable. To learn more about the print_r( … ) function, please check out the PHP Manual page.

var_dump( … )

The var_dump( … ) function outputs a ton of information about a variable. It is somewhat similar to the print_r( … ) function but contains a lot more information about the variable. The information includes its type and value. Also note that all public, private and protected properties of objects will be returned in the output. An example var_dump( … ) is given below:

The output for this example (tested on Compile Online) would look like:

var_dump-Example

I personally use var_dump( … ) a lot in my debugging. Using it on things like the $_POST array makes things infinitely easier when testing things, and its nice to just see all the output at the top of the page. If you want to learn more about the var_dump( … ) function, please check out the PHP Manual page.

var_export( … )

There is also the very mighty PHP function var_export( … ). This function acts in pretty much the same way as var_dump( … ) but the string that is returned is valid PHP code. Also note that var_export( … ) can turn any object into an array. This means you can use it on classes as well. Let’s take a look at an example using the same array as in our var_dump( … ) example:

The output for this var_export( … ) call (tested on Compile Online) would look like:

var_export-Example

As you can see – the output is valid syntax for a PHP array. This can be used for a variety of different things, but there are only a couple uses that really pertain to debugging. Firstly, its very useful that the output is given as valid PHP code because it will instantly be easy for coders to understand if something went wrong. You can also use this function to see all available methods of a class. As you can imagine, this function also has a lot of creative uses, but we won’t get into those here. For more information about the var_export( … ) function, please check out the PHP Manual page.

WordPress Built in Debugging

While the above techniques also work for WordPress, there are some built in tools in WordPress that help you to debug your code easily. Most of these features should always be turned on when you are working in your development environment. They will save you a ton of time and energy.

define(‘WP_DEBUG’, true)

The first of those tools is found in the wp-config.php file, the constant define(‘WP_DEBUG’, false) (notice the constant is false by default). If you set this constant to true you’ll start to see all PHP errors,  notices and warnings – including notices about depreciated functions. Coupled with Xdebug (which will display all errors, notices and warnings a really nice format) you will be able to debug most of your problems just using this constant. Let’s take a look at a site that has define(‘WP_DEBUG’, true) defined:

WP-DEBUG-True

As you can see, we now see a bunch of information on the goings on in our site. You might notice that on my test site, we have a few notices related to an undefined constant (this is actually a well known error that has to do with using an older version of PHP on your server). You can see the notices that pop up and you will also see that they point to the exact line where the problem is coming from. We can then go in and fix whatever the problem is.

define(‘WP_DEBUG_LOG’, true)

The define(‘WP_DEBUG_LOG’, true) is a companion constant to the wp-config.php constant that allows you to (if you set the constant to true) save all the information displayed by wp-config.php into a file called debug.log. This is especially useful if you want to see notices that would be displayed off screen, such as in an AJAX call.

define(‘WP_DEBUG_DISPLAY’, true)

The define(‘WP_DEBUG_DISPLAY’, true) is another companion constant to the wp-config.php constant that allows you to control whether or not you want your errors, notices and warnings to display inside the HTML of your page or not. You can use define(‘WP_DEBUG_DISPLAY’, true) along with define(‘WP_DEBUG_LOG’, true) to make sure that errors are both saved to the debug.log file as well as displayed on the page.

define(‘SCRIPT_DEBUG’, true)

This constant will force WordPress to use development version of core CSS and JavaScript files rather than the minified versions that are normally loaded. This is especially useful when you want to try to make modifications to any built in CSS or JavaScript files. Note that the default value for this constant is false.

define(‘SAVEQUERIES’, true)

The built in WordPress $wpdb object is an amazing thing. I have definitely been guilty of not using this in the past, but now it is the only thing I use to do database operations. It makes everything easier, faster, and better! Another reason to use this handy feature is the define(‘SAVEQUERIES’, true) constant. When the constant defined as true causes each query to be saved, how long that query took to execute, and what function called it. This is all stored in the $wpdb->queries global. It is really important to note that this will have a performance impact on your site, so it should only be turned on when debugging.

dobsondev.com

Установка Debug Bar

Debug Bar — это бесплатный плагин для WordPress, который добавляет меню для отладки в верхнюю панель WordPress. Debug Bar позволяет просматривать информацию о запросе, потребляемую память, выполненные SQL запросы, их производительность, состояние объектного кэширования и многое другое.

Debug Bar находится в официальной директории плагинов на WordPress.org, поэтому установить его можно прямо из панели администрирования WordPress через меню Плагины → Добавить новый.

Для полноценной работы плагина Debug Bar, необходимо сделать некоторые изменения в конфигурационном файле wp-config.php для того, чтобы включить режим отладки WordPress и для сохранения информации о запросах в MySQL при их выполнении:

define( 'WP_DEBUG', true );  define( 'SAVEQUERIES', true );  

После установки и активации плагина, в верхней панели WordPress вы увидите новое меню Debug, которое раскрывает панель отладки. В этой панели вы увидите общую информацию о запросе: версии PHP и MySQL, потребляемую память, а так же несколько разделов с подробной информацией.

Раздел Notices/Warnings

В разделе Notices/Warnings вы увидите сообщения и предупреждения вызванные PHP, например при использовании не определённой переменной, или не указав обязательный аргумент при обращении к функции. Если запрашиваемая страница не вызвала подобных ошибок, то данный раздел будет скрыт.

Стоит так же отметить, что подобные сообщения и предупреждения можно выводить самостоятельно функцией trigger_error, а директивой WP_DEBUG_DISPLAY в файле конфигурации wp-config.php вы можете отключить вывод ошибок на экран, чтобы все сообщения и предупреждения выводились только в разделе Notices/Warnings плагина Debug Bar.

Раздел Queries

Раздел Queries содержит подробную информацию о всех выполненных запросах в базу данных MySQL, включая время выполнения каждого запроса и функцию, которая его выполнила. В этот же раздел попадают все пользовательские запросы выполненные через объект $wpdb.

Раздел WP Query

В данном разделе вы увидите информацию об основном запросе WP_Query, включая все аргументы запроса и файл шаблона использованный для вывода результата. Если запрос был на запись или страницу, то вы так же увидите значения всех полей запрошенной записи.

Раздел Deprecated

Если активная тема или плагин использует устаревшие функции, устаревшие аргументы к функциям или устаревшие файлы ядра WordPress, то в данном разделе вы увидите информацию о том, где была вызвана такая функция (аргумент или файл), и сообщение о том как это исправить.

Дополнительно к этому разделу советуем попробовать плагин Log Deprecated Notices.

Раздел Request

Если вы работаете с собственными правилами WP_Rewrite, раздел Request поможет вам в отладке. Здесь вы увидите правила, по которым WordPress перевёл адрес запрошенной страницы в список аргументов к объекту WP_Query.

Хорошим дополнением к этому разделу будет плагин Rewrite Rules Inspector.

Раздел Object Cache

В WordPress реализован механизм кэширования объектов для ускорения работы движка. В разделе Object Cache вы увидите информацию о состоянии объектного кэша, включая размеры всех групп. Данный раздел особенно полезен тогда, когда вы имеете дело с плагинами для внешнего кэширования объектов, например Memcached.

Дополнения к плагину Debug Bar

Плагин Debug Bar позволяет добавлять дополнительные разделы с помощью сторонних плагинов. Ниже приведены некоторые из дополнений, которые мы советуем вам попробовать.

  • Debug Bar Extender
  • Debug Bar Cron
  • Debug Bar Transients
  • Debug Bar Console

Так же как и сам плагин Debug Bar, дополнения можно установить из раздела Плагины → Добавить новый.


Какой из выше перечисленных разделов плагина Debug Bar вам показался наиболее полезным? Пользуетесь ли вы другими методами и инструментами для отладки в WordPress? Оставьте ваше мнение, используя форму комментирования или напишите нам в Твиттер!

wpmag.ru

Как и в случае со многими другими вещами, связанными с разработкой WordPress, лучший способ разобраться в константе WP_DEBUG_LOG – это найти ее в коде ядра WordPress.

Важный участок кода находится в файле wp-includes/load.php:

function wp_debug_mode() { 	if ( WP_DEBUG ) { 		error_reporting( E_ALL );  		if ( WP_DEBUG_DISPLAY ) 			ini_set( 'display_errors', 1 ); 		elseif ( null !== WP_DEBUG_DISPLAY ) 			ini_set( 'display_errors', 0 );  		if ( WP_DEBUG_LOG ) { 			ini_set( 'log_errors', 1 ); 			ini_set( 'error_log', WP_CONTENT_DIR . '/debug.log' ); 		} 	} else { 		error_reporting( E_CORE_ERROR | E_CORE_WARNING | E_COMPILE_ERROR | E_ERROR | E_WARNING | E_PARSE | E_USER_ERROR | E_USER_WARNING | E_RECOVERABLE_ERROR ); 	} 	if ( defined( 'XMLRPC_REQUEST' ) ) 		ini_set( 'display_errors', 0 ); }

Если вы установите WP_DEBUG в true, зададите WP_DEBUG_DISPLAY в false и WP_DEBUG_LOG в true, то в таком случае все ошибки будут выводиться в файле debug.log в вашей папке wp-content; в PHP информация об ошибках будет отсутствовать.

Чтобы задать эти константы, вы должны добавить следующие строки в свой wp-config.php:

define( 'WP_DEBUG', true ); define( 'WP_DEBUG_DISPLAY', false ); define( 'WP_DEBUG_LOG', true );

Но зачем это делается?

1. Чтобы скрыть ошибки

Нравится ли вам видеть ошибки в веб-браузере? Вы действительно уверены, что вам выводится абсолютно всё? Что по поводу блоков div, скрытых с помощью CSS? Что по поводу AJAX-запросов?

Интерфейс – не самое надежное место, чтобы отлавливать ошибки. Лог-файл PHP показывает абсолютно всё.

2. Чтобы отловить все ошибки.

Может быть, вы любите использовать такие плагины, как Debug Bar или Query Monitor, для отлова ошибок, и вам их вполне хватает. Я не виню вас в этом. Эти плагины действительно крутые.

Однако я обнаружил, что они пропускают некоторые ошибки. Я подозреваю, что это вызвано их натурой – ведь они являются плагинами, и перед ними могут загружаться другие плагины. Конечно, вы можете изменить порядок загрузки, чтобы они загружались в самом начале, однако как быть относительно ошибок в мультисайтовых плагинах и в самом ядре WordPress? Кроме того, как я обнаружил, ошибки с Strict Standards не учитываются этими плагинами.

Эти плагины идеально подходят для разных вещей, однако в случае с отловом всех PHP-ошибок на них полагаться не стоит. PHP сам по себе – это надежный источник отчетов об ошибках, и именно такой отчет вы найдете в debug.log.

3. Чтобы убрать ошибки сторонних плагинов.

Все это прекрасно, если ваш код выдает ошибки. Вы можете их исправить.

Но как быть со сторонними плагинами, которые вы активировали? Как быть, если они выдают предупреждения и уведомления повсюду в вашем интерфейсе? А поскольку вы включили отчеты WP_DEBUG, вы получаете уведомления, предупреждения, несоответствие стандартам и т.д. Перебор. Это может мешать и сделать практически невозможной работу с определенными активированными плагинами.

В прошлом я попросту бы деактивировал такие плагины. Не самое лучшее решение. Кроме того, как быть, если вы не можете работать без этих плагинов? Раньше я просто отключал WP_DEBUG. Позорно, я знаю.

На данном этапе я буду просто считать, что переиграл вас. Вы уже добавили константы выше в wp-config.php и подключили debug.log. Теперь вы можете отслеживать и фильтровать debug.log.

Отслеживание и фильтрация debug.log

Помимо отслеживания debug.log на ошибки, вам, естественно, понадобится убрать из него весь шум, созданный сторонними плагинами. Иначе ваши «правильные» ошибки могут утонуть в этом шуме.

Безусловно, некоторые люди используют приложение Console в OS X для считывания лог-файла, которое имеет свою фильтрацию лишнего шума от сторонних плагинов. Звучит интересно, хотя сам я это не пробовал. Я решил пойти окольным путем.

Я написал PHP-скрипт. Он просто отслеживает лог-файл на изменения и выдает уведомления об ошибках. Он может также фильтровать все Xdebug блоки, основываясь на регулярных выражениях, что позволит вам игнорировать предупреждения и уведомления со стороны сторонних плагинов.

Один debug.log для всех сайтов

Раньше я использовал отдельные логи debug.log для всех сайтов, которые у меня имеются в среде разработки. Когда я переключался на другой сайт, чтобы работать с ним, мне нужно было также отслеживать уже другой лог-файл. Не самое лучшее решение.

Теперь у меня для всех сайтов задан один лог. Сделал я это с помощью простого плагина. Я добавил следующий код в wp-content/mu-plugins/custom-debug-log-path.php для каждого сайта:

<?php /**  * Plugin Name: Custom Debug Log Path  */  ini_set( 'error_log', '/srv/www/all-debug.log' );

Теперь мне достаточно было следить за одним логом для всех своих разрабатываемых сайтов.

Такой подход работает просто прекрасно. Конечно, есть еще много улучшений, которые можно сделать, однако мне вполне хватило такого отчета об ошибках.

Используете ли вы похожий отчет об ошибках? Какие улучшения вы можете предложить?

Источник: deliciousbrains.com/

oddstyle.ru

Enabling WordPress Debugging

When we ask you for the debug log file you should:

  1. Enable WordPress debug by setting the WP_DEBUG switch in the wp-config.php file to true, as per the following example:
    • define( ‘WP_DEBUG’, true );
  2. Enable the generation of the debug log file by adding the following line to the wp-config.php file:
    • define( ‘WP_DEBUG_LOG’, true );

By default the WordPress debug log file is called debug.log and is created in the /wp-content/ WordPress sub directory. Once you enabled debugging reproduce the issue so the error is captured in the log file. Once you reproduce the issue disable the debugging by setting both the WP_DEBUG and WP_DEBUG_LOG directives in the wp-config.php file to false.

Additional WordPress Debugging Options

Most probably we will never ask you to use these options, but it is good to know about them as well. Apart from the above mentioned options you can also use the following WordPress debugging options:

WP_DEBUG_DISPLAY

When this option and WordPress debugging are enabled WordPress will show the debug messages in the HTML pages as they are generated. If used on a live website this could lead to the disclosure of sensitive information about the website and server setup, so use cautiously. To enable this option add the below line to your wp-config.php file:

define( ‘WP_DEBUG_DISPLAY’, true );

SCRIPT_DEBUG

When this option and WordPress debugging are enabled WordPress will use the development versions of core CSS and JavaScript files instead of the minified (compressed) version that it normally uses. This debugging option is useful if you are testing changes in .js and .css files. To enable this option add the below line to your wp-config.php file:

define( ‘SCRIPT_DEBUG’, true );

Logging of WordPress Database Queries

In WordPress you can also keep a log of the WordPress database query in an array. This option comes in handy if you are experiencing WordPress database issues. To enable it add the following line to your WordPress wp-config.php file:

define(‘SAVEQUERIES’, true);

Once you enable this option all queries will be saved in the $wpdb->queries global.

Does Debugging Affect the Performance of My WordPress?

Yes, and some options (such as the logging of database queries) can have a very big impact on the performance of your website. Therefore unless it is a test or staging website, you should only enable debug when necessary and temporarily, to troubleshoot a specific issue.

www.wpsecurityauditlog.com


You May Also Like

About the Author: admind

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.