PHP не предоставляет традиционных средств для обнаружения и восстановления после фатальных ошибок. Это потому, что обработка не должна быть восстановлена после фатальной ошибки. Строка, совпадающая с выходным буфером (как было предложено в оригинальном посте, описанном на PHP.net), определенно не рекомендуется. Это просто ненадежно.
Вызов функции mail () из метода обработчика ошибок также оказывается проблематичным. Если бы у вас было много ошибок, ваш почтовый сервер был бы загружен работой, и вы могли бы оказаться с мрачным почтовым ящиком. Чтобы избежать этого, вы можете использовать cron для периодического сканирования журналов ошибок и соответствующей отправки уведомлений. Вы также можете посмотреть на программное обеспечение для мониторинга системы, например Nagios .
Чтобы поговорить с битом о регистрации функции отключения:
Это правда, что вы можете зарегистрировать функцию выключения, и это хороший ответ.
Дело в том, что мы обычно не должны пытаться восстанавливаться после фатальных ошибок, особенно не используя регулярное выражение для вашего выходного буфера. Я отвечал на принятый ответ , который связан с предложением на php.net, которое с тех пор было изменено или удалено.
Это предложение заключалось в том, чтобы использовать регулярное выражение для выходного буфера во время обработки исключений, а в случае фатальной ошибки (обнаруженной при сопоставлении с любым настроенным текстом ошибки, который вы могли ожидать), попытайтесь выполнить какое-либо восстановление или продолжение обработки. Это не было бы рекомендуемой практикой (я думаю, поэтому я не могу найти оригинальное предложение тоже. Я либо пропускаю его, либо сообщество php сняло его).
Возможно, стоит отметить, что более поздние версии PHP (около 5.1), по-видимому, вызывают функцию выключения раньше, до вызова обратного вызова буферизации вывода. В версии 5 и более ранних версиях этот порядок был обратным (за обратным вызовом буферизации вывода следовала функция выключения). Кроме того, начиная с версии 5.0.5 (что намного раньше, чем версия 5.2.3 опрашивающего), объекты выгружаются задолго до вызова зарегистрированной функции выключения, поэтому вы не сможете полагаться на объекты в памяти для выполнения много всего.
Таким образом, регистрация функции выключения - это хорошо, но задачи, которые должны выполняться с помощью функции выключения, вероятно, ограничены горсткой простых процедур выключения.
Ключевой вывод здесь - это всего лишь несколько слов мудрости для любого, кто натыкается на этот вопрос и видит совет в первоначально принятом ответе. Не проверяйте свой выходной буфер.