Перехватить фатальные ошибки

sunyang

Новичок
Возникла у меня такая проблемка:
На серваке для домена стоит походу в жесткую display_errors on
Смена значения в htaccess на display_errors off результата не дает.
И если в каком-то файле возникает косяк, то показывается ошибка и пути и т.д., что думаю не очень гуд.
Так вот заморочился такой темой: можно ли перехватить ошибку и не показывать ее, а использовать для отображения ошибок свою функцию.

Нашел в документации вот это: set_error_handler
Но как ее заюзать так и не понял.

Например делаю так:

PHP:
function error_handler($errno , $errstr)
{
// ..показываем ошибку только если есть сессия админа
}

set_error_handler(error_handler);

// далее выдаем ошибку:

$a = у у
и один фик ошибка вываливается.
Я как-то неправильно ее юзаю?
Нужно использовать буферизацию?
 

Фанат

oncle terrible
Команда форума
Чтобы твоя функция запустилась, надо чтобы пхп пропарсил скрипт. А как он его пропарсит с ошибкой?
htaccess на display_errors off результата не дает.
во-первых, никакие офф там не работают, только 0 и 1
во-вторых, ты уверен вообще что у тебя хтаксесс работает?
 

AmdY

Пью пиво
Команда форума
Фанат ну, это ясно. Но чтобы такое заливать на сервер нужно быть полным идиотом. Хотя хостинг с включённым выводом ошибок это уже идиотизм.
А вот директивы в htaccess лучше не испольовать и юзать пхп функции.
 

Sam Dark

Новичок
Можно, если есть XDebug, чего вполне достаточно при разработке.
 

Фанат

oncle terrible
Команда форума
дык в error.log можно посмотреть еще в какой строке ошибка
Трейс - это не строка, а СТРОКИ.
Ну увидишь ты, что у тебя ошибка в строке драйвера БД, который выполняет запрос. А что был за запрос, в каком файле - загадка.
 

Breeze

goshogun
Команда форума
Партнер клуба
Трейс - это не строка, а СТРОКИ.
Ну увидишь ты, что у тебя ошибка в строке драйвера БД, который выполняет запрос. А что был за запрос, в каком файле - загадка.
в данном случае можно получить запрос, для этого полный debug_backtrace не нужен
мне иногда в почту приходят такие, давно не было, а то показал бы как выглядит

правда делается это немного другими методами, нежели debug_backtrace, забота о сохранении на либу БД возлагается
 

Breeze

goshogun
Команда форума
Партнер клуба
Чукчи - писатели )
как уже было сказано -- вывалить в продакшен синтакс еггог, надо быть полным идиотом, а остальное вполне себе разруливается.

sunyang
открой для себя опцию -l у консольного php
 
Сверху