PHP Журнал всех ошибок, брошенных

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

В следующем коде печатается необъявленный $ a. но это не уловило.

$error = "";
try
{
echo $a; // not declared
}
catch(Exception $e)
{
$error = $e->getMessage();
}

Выход

Notice (8): Undefined variable: a [APP\Controller\CronJobsController.php, line 71]

0

Решение

Уведомление не является исключением, поэтому его нельзя перехватить в блоке Try {} Catch {}. Аналогично с предупреждениями.

Как правило, лучше иметь уровень error_reporting, чтобы они отображали уровни в вашей среде разработки, чтобы вы были вынуждены решать эти проблемы при кодировании.

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

<?php
// set custom handler for NOTICES
// $oldHandler will allow you to reset the handler back to PHP default later
$oldHandler = set_error_handler('myErrorHandler', E_NOTICE|E_WARNING);

function myErrorHandler($errno, $errstr, $errfile, $errline) {

// log to DB in here
// $db->query("INSERT INTO error_log (errno, errstr... ) VALUES (...)");

// return false to let the error bubble up and get caught by default error handler
// return false;

// return true to tell PHP you've dealt with it
return true;
}

// YOUR SAMPLe CODE SHOULD NOW CAPTURE THE NOTICE
$error = "";

try
{
echo $a; // not declared
}
catch( \Error $e)
{
$error = $e->getMessage();
}

?>
1

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector