PHP — выполнять некоторый код при каждой ошибке или предупреждении

Я ищу общий способ для выполнения некоторого кода при каждой ошибке/предупреждении и т.д.

У меня есть несколько веб-сайтов с одинаковой кодовой базой, и я хотел бы собрать все ошибки в одном централизованном месте. Для этого мне нужен обратный вызов, который вызывается каждый раз, когда возникает ошибка.

Можно ли добиться этого, используя только PHP (код или конфигурацию), или мне нужно перейти на уровень веб-сервера?

set_error_handler()
Blackhole 07.04.2019 14:18

Следующие типы ошибок не могут быть обработаны с помощью определяемой пользователем функции в set_error_handler(): E_ERROR, E_PARSE, E_CORE_ERROR, E_CORE_WARNING, E_COMPILE_ERROR, E_COMPILE_WARNING и большая часть E_STRICT возникает в файле, где вызывается set_error_handler().

dearsina 07.04.2019 14:23
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
1
2
34
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Короче говоря, нет. Если PHP дает сбой (и, таким образом, генерирует ошибку), нет простого способа собрать эту ошибку, потому что вызванный скрипт остановится после того, как обнаружит ошибку.

set_error_handler() каким-то образом решает эту проблему, но многие типы ошибок (E_ERROR, E_PARSE, E_CORE_ERROR, E_CORE_WARNING, E_COMPILE_ERROR, E_COMPILE_WARNING и большинство E_STRICT) не будут обнаружены таким образом.

Если ошибки создаются классами и методами, создающими исключения, перехватите как можно больше с помощью структур try{} catch{}.

Возможно, вы могли бы настроить свою среду так, чтобы каждый вызов PHP на самом деле был вызовом файла master-PHP, который затем выполняет PHP-скрипты, собирает выходные данные и отображает их пользователю, но это слишком много ненужной сложности.

Если вы используете AJAX-среда (где вызовы PHP осуществляются через вызовы AJAX, а не изменения в URL-адресе), вы можете настроить прослушиватель JavaScript, который улавливает неожиданные результаты и сохраняет их. Вот как я это делаю в настоящее время.

Я хотел бы услышать от других, есть ли какие-либо другие приемы для обнаружения ошибок.

Другие вопросы по теме