Необходимо создать пользовательский обработчик ошибок, позволяющий управлять уровнем сообщений PHP об ошибках.
Для установки собственной функции обработки ошибок применяется функция set_error_handler():
set_error_handler('pc_error_handler');
function pc_error_handler($errno, $error, $file, $line) {
$message = "[ERROR][$errno][$error][$file:$line]";
error_log($message);
}
Пользовательская функция обработки ошибок может анализировать
ошибки на основании их типа и предпринимать соответствующие действия. Список типов ошибок приведен в табл. Настройка обработки ошибок
Передайте функции set_error_handler() имя функции, и PHP будет направлять все ошибки этой функции. Функция обработки ошибок может
принимать до пяти параметров. Первый параметр – это тип ошибки, например 8 дляE_NOTICE. Второй параметр – это текст сообщения об ошибке, такой как «Undefined variable: html». Третий и четвертый аргументы содержат имя файла и номер строки, в которой PHP обнаружил
ошибку. Последний параметр представляет массив, содержащий все переменные, определенные в текущей области видимости, и их значения.
Например, в следующем фрагменте кода к переменной $html прибавляется значение без предварительного присваивания начального значения:
error_reporting(E_ALL);
set_error_handler('pc_error_handler');
function pc_error_handler($errno, $error, $file, $line, $context) {
$message = "[ERROR][$errno][$error][$file:$line]";
print "$message";
print_r($context);
}
$form = array('one','two');
foreach ($form as $line) {
$html .= "<b>$line</b>";
}
Когда генерируется ошибка «Undefined variable», то функция pc_error_handler() печатает:
[ERROR][8][Undefined variable: html][err all.php:16]
Вслед за начальным сообщением об ошибке функция pc_error_handler()
печатает большой массив, содержащий все глобальные переменные,
переменные окружения, переменные запросов и переменные сеанса.
Еще раз подчеркнем, что ошибки, отмеченные в табл. Настройка обработки ошибок, как уловимые, можно обработать функцией, зарегистрированной с помощью
функции set_error_handler(). С остальными связаны настолько серьезным проблемы, что пользователю лучше передоверить их обработку PHP.
Документацию по функции set_error_handler() на http://www.php.net/set-error-handler.