Коротко: вывод ошибок PHP настраивают директивами display_errors (показывать) и error_reporting (какие показывать). В разработке включают display_errors = On и error_reporting = E_ALL, а на рабочем сайте — display_errors = Off и логирование в файл. Настраивают в php.ini, .user.ini, .htaccess или прямо в скрипте через ini_set().
Две директивы — два вопроса
| Директива | Отвечает за |
|---|---|
display_errors |
показывать ли ошибки на странице |
error_reporting |
какие типы ошибок обрабатывать |
log_errors |
писать ли ошибки в лог |
error_log |
путь к файлу лога |
Вкладки: настройка
; для разработки
display_errors = On
error_reporting = E_ALL
; для рабочего сайта
display_errors = Off
log_errors = On
error_log = /path/to/php-error.logВ php.ini задают глобально. Файл правят в панели хостинга или у администратора сервера.
; .user.ini в корне сайта
display_errors = On
error_reporting = E_ALL
log_errors = On.user.ini часто перебивает серверный php.ini в режиме PHP-FPM. Иногда нужен .htaccess:
php_flag display_errors onini_set('display_errors', '1');
ini_set('display_startup_errors', '1');
error_reporting(E_ALL);Так включают ошибки в конкретном скрипте — удобно для отладки одного файла. На рабочий сайт это не влияет.
// wp-config.php
define('WP_DEBUG', true);
define('WP_DEBUG_LOG', true); // лог в wp-content/debug.log
define('WP_DEBUG_DISPLAY', false);
@ini_set('display_errors', 0);В WordPress включайте WP_DEBUG только на копии сайта. Лог debug.log покажет ошибки, не «светя» их посетителям.
Warning: include(/var/www/...) раскрывают пути, версии и структуру. Держите display_errors = Off на рабочем сайте и читайте лог.Практика: найти ошибку правильно
- Включите логирование (а не показ ошибок) на рабочем сайте.
- Воспроизведите проблему.
- Откройте лог (
debug.logили серверный лог) и найдите последнюю ошибку. - Для отладки конкретного кода включите показ ошибок временно.
- Исправьте причину и выключите отладку.
Частые ошибки: причина → решение
| Симптом | Причина | Решение |
|---|---|---|
| «Белый экран» | показ ошибок выключен | включить лог и отладку |
| Настройки не применяются | серверный лимит/режим | использовать .user.ini |
| Лог пуст | не задан error_log |
указать путь к файлу |
| Ошибки видны посетителям | display_errors = On |
выключить |
Проверьте себя
Вопросы и ответы
Часто в корне сайта (error_log), в папке логов хостинга или в wp-content/debug.log при включённом WP_DEBUG_LOG.
Да, через условия в коде: сравнить IP и включить display_errors только для него. Так посетители ничего не увидят.
Возможно, не задан путь error_log или у веб-сервера нет прав на запись. Уточните у хостинга, где их лог.
Это константа WordPress, которая решает, показывать ли ошибки на странице. Для отладки обычно true на копии, а на проде — false с логированием.
Итоги
display_errors— показ,error_reporting— какие ошибки.- На рабочем сайте показ выключают, включая логи.
- Настраивают в
php.ini,.user.ini,.htaccessилиini_set(). - В WordPress —
WP_DEBUGи логdebug.log.
Комментарии
Пока комментариев нет — будьте первым, кто поделится мнением.