Всем привет. Есть скрипт на PHP, и мне нужно нормально настроить логирование ошибок — чтобы не пропускать никаких предупреждений и фаталок. В php.ini включил display_errors=Off, log_errors=On и указал error_log в файл, но бывает, что ошибок просто не видно в логе. Плюс иногда ошибки выводятся прямо на экран (хотя display_errors выключен).
Проверял права на файл лога — норм, директория существует. Код запускаю через веб-сервер, PHP 8.4. Уже пробовал в начале скрипта ставить error_reporting(E_ALL); ini_set('log_errors', '1'); ini_set('error_log', '/путь/к/файлу.log'); — без изменений. Интересно, влияет ли конфигурация на уровне виртуального хоста или еще где-то?
У кого есть рабочие проверенные лайфхаки или шаблон конфигурации, где логирование отлажено по-человечески? Может, кто сталкивался с тем, что некоторые ошибки игнорируются по дефолту? Или стоит ловить исключения вручную через set_error_handler / set_exception_handler и дополнительные логи? Хотелось бы понять, как у вас это устроено в боевых проектах.
Часто случается, что настройки в php.ini перекрываются настройками в виртуальном хосте или .htaccess, так что проверяй там тоже. Ещё полезно ставить set_error_handler и set_exception_handler — так можно ловить и логировать ошибки, которые PHP сам не кидает в error_log. И не забудь, что некоторые фаталки могут прерывать скрипт до логирования, так что просвечивай flux ошибок через try/catch в критичных местах.