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