Логи ошибок в PHP — как быстро настроить и что реально работает
Короче, нужна простая и надежная схема логирования ошибок в PHP. Самое базовое — включить error_reporting(E_ALL), display_errors выключить (иначе на проде будет срач в выводе), и указать error_log, чтобы писать куда-то в файл.
Варианты, которые встречал и юзал:
1. php.ini — настроить display_errors=Off, log_errors=On и error_log=/путь/к/файлу.log. Минус — иногда неясно, когда он реально пишет и с каким уровнем ошибок.
2. В скриптах вручную через ini_set('log_errors', 1) и ini_set('error_log', 'путь'). Так можно подстраивать под разные части проекта.
3. Использовать set_error_handler — ловишь ошибку свои функции и логируешь как хочешь (в базу, в другой файл). Гибко, но требует понимания.
4. Framework-решения — если Laravel или Symfony, там свои механизмы, но для чистого PHP лучше не заморачиваться.
5. На проде часто ставлю rotate логов через logrotate или аналог — чтобы логи не росли до гигабайтов.
Еще проверяйте, что владелец и права на папку с логами подходят — часто из-за этого тишина в error_log.
Кто как обычно ведет логи в простых PHP-проектах? Может есть нестандартные идеи?
Для простого проекта часто хватает error_reporting(E_ALL) + log_errors в php.ini, display_errors off и правильный путь в error_log. Главное — чтобы PHP мог писать в файл, а логи потом рубить через logrotate, иначе быстро разрастаются. set_error_handler — уже для тех, кто хочет больше контроля, но можно и без этого обойтись.
Не всё так просто с логами в PHP. Часто кажется, что включил error_reporting и error_log — и готово, но на практике ошибки могут молчать из-за прав на файл или настроек сервера. set_error_handler вроде и полезен, но для простых проектов это уже усложнение без особого толка. Иногда проще просто смотреть в стандартные логи сервера и не городить лишнего.