/ Wordpress / Работа с ошибками Wordpress

Работа с ошибками WordPress

HIT

22.10.2019

1202

В данной статье рассмотрим не конкретные ошибки (это уже сделано здесь), а методологию как их выявлять и работать с ними.

Лог ошибок

Включить запись ошибок в лог

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

Отловленные ошибки записываются в файл debug.log в папку wp-content.

Показ ошибок только для администратора

Можно использовать специальный GET-параметр для включения режима DEBUG

if ( isset( $_GET['debugmode'] ) && 'debugmode' == $_GET['debugmode'] ) {
	define( 'WP_DEBUG', true );         
} else {
	define( 'WP_DEBUG', false ); 
}

Режим отладки будет доступен по добавке к URL:

/?debugmode=debugmode

Режим отладки по конкретному IP:

if ('YOUR_IP_ADDRESS' == $_SERVER['REMOTE_ADDR']) {
	define('WP_DEBUG', true);
} else {
	define('WP_DEBUG', false);   
}

Ошибки не выводяться

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

error_reporting(0); // отключает сообщения об ошибках
ini_set('display_errors', 0); // отключает показ ошибок на экран

Чтобы принудительно снова включить отображение ошибок, нужно позже прописать эти же функции:

error_reporting(E_ALL); // включаем сообщения об ошибках
ini_set('display_errors', 1); // включаем показ ошибок на экран

Но лучше конечно найти где они прописаны и убрать.

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

Не ведется лог ошибок

Это может быть связано с настройками сервера. Потому что на сервере в файле /etc/php-fpm.d/www.conf (в самом конце) по умолчанию установлено:

php_admin_value[error_log] = /var/log/php-fpm/www-error.log
php_admin_flag[log_errors] = on

Вот эти параметры не могут быть перекрыты вызовом ini_set(), в результате чего сделать вывод лога ошибок в wp-content/debug.log не получается.

Для решения нужно закомментировать эти строки и перезапустить php-fpm. После чего файл лога будет успешно создаваться и лог ошибок будет записываться в wp-content/debug.log.

Запись в лог ошибок

Чтобы занести запись в лог ошибок, например при отладке какого-либо кода, делается это так:

error_log('something..');

Игнорирование ошибок

Некоторые ошибки блокируют работу админки. В этом случае в wp-config можно попробовать это:

ini_set('display_errors','Off');
ini_set('error_reporting', E_ALL );

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

Отдельный шаблон для ошибок

Создаём файл php-error.php в папке /wp-content/ и добавляем в него примерно такое содержимое:

<html>
<head>
  <meta charset="utf-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1">
  <title>Error</title>
<style>
body *{font-family: Arial, Helvetica Neue, sans-serif; font-size:18px;text-align:center;padding:10px;margin:10px auto;max-width:728px;}body{background:#444;color:#eee}h1{font-size:32px}a{color:gold;}
</style>
</head>
<body>
  <section>
    <h1>На сайте произошла ошибка</h1>
    <p>Мы устраним эту проблему в ближайшее время.</p>
    <p><a href="/">Перейти на главную страницу</a></p>
  </section>
  <!-- <footer>Администрация сайта</footer> -->
</body>
</html>

Теперь при срабатывании ошибки пользователи будут видеть эту страницу.

Поделиться в соц. сетях:

  • Комментарии
  • Вложения

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

Пока нет комментариев. Будь первым!

Работа с ошибками WordPress
Акция 20% на каждый второй и 30% на каждый 3 товар
Рекомендации для васАкция 20% на каждый второй и 30% на каждый 3 товарOpttour.ru
Спасибо! Наш менеджер свяжется с Вами в течении 5 минут.