Почему ошибки 500 не записываются в файл error.log?
По умолчанию сервер Apache настроен так, что ошибки уровня Internal Server Error (код 500) могут не фиксироваться автоматически в стандартный журнал ошибок (error.log), если они возникают внутри пользовательского скрипта или модуля расширения PHP/mod_perl и не перехватываются обработчиком исключений приложения.
Фактический ответ:
Ошибки HTTP 500 обычно регистрируются только тогда, когда сервер сам генерирует такую ошибку, например, при проблемах с конфигурацией сервера или его компонентами. Если ошибка возникает из-за некорректного кода пользователя, она может быть пропущена стандартными настройками журнала.
Практическое уточнение:
Чтобы гарантированно фиксировать все ошибки 500, нужно настроить перехват исключений через код приложения или изменить настройки сервера таким образом, чтобы он всегда записывал такие события в журнал. Например, можно добавить следующий фрагмент в конфиг Apache:
apache
ErrorLogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\""
CustomLog "/var/log/apache2/error.log" combined
Мини-чек-лист:
Убедитесь, что модуль modlogconfig включён в конфигурации вашего сервера.
Проверьте наличие записи об ошибке вручную в журнале /var/log/apache2/error.log.
Настройте обработку исключений в вашем приложении, чтобы гарантировать запись всех ошибок 500.