класс — PHP пользовательский обработчик ошибок не работает

Я нашел фрагмент кода здесь на StackOverFlow для обработчика ошибок.
Проблема, с которой я сталкиваюсь, именно та, о которой спрашивал автор темы.

Об ошибках просто не сообщают.
Немного расстраивает, так как мне действительно нужен приличный обработчик ошибок. Я нашел красивый от Джозефа Лентона, но он абсолютно ломает все, что я хочу сделать Поэтому мне нужно создать свой, который работает для меня.

Эта проблема:

Он не сообщает об ошибках : S

    <?php
class class_error
{
public function __construct()
{
// set to the user defined error handler
set_error_handler([$this, 'errorHandler']);
}

public function errorHandler($errno, $errstr, $errfile, $errline)
{
//don't display error if no error number
if (!(error_reporting() & $errno)) {
return;
}

//display errors according to the error number
switch ($errno)
{
case E_USER_ERROR:
echo "<b>ERROR</b> [$errno] $errstr<br />\n";
echo "  Fatal error on line $errline in file $errfile";
echo ", PHP " . PHP_VERSION . " (" . PHP_OS . ")<br />\n";
echo "Aborting...<br />\n";
exit(1);
break;

case E_USER_WARNING:
echo "<b>WARNING</b> [$errno] $errstr<br />\n";
break;

case E_USER_NOTICE:
echo "<b>NOTICE</b> [$errno] $errstr<br />\n";
break;

default:
echo "<b>UNKNOWN ERROR</b> [$errno] $errstr<br />\n";
break;
}

//don't execute PHP internal error handler
return true;
}
}
?>

Я называю сценарий:

<?php
include('function.errorhandler.class.php');
$error = new class_error();

echo 'dssd;
?>

Я все еще продолжаю получать те же старые ошибки, сгенерированные PHP. : о

Итак, давайте вернемся к основам, потому что кажется невозможным снова заставить работать даже самые простые вещи.

<?php
include('function.errorhandler.class.php');

///######## DEFAULT ERROR HANDLER
set_error_handler('ErrorHandler');
///######## SHUTDOWN HANDLER
register_shutdown_function('FatalErrorHandler');
///######## A FILE BECAUSE PHP DOES NOT WANT TO ACCEPT ANY ERROR HANDLER IN THE SAME FILE
include('hi.php');
?>

И определяется в файле errorhandler.class:

function ErrorHandler(){
exit(print_r(func_get_args()));
}
function FatalErrorHandler(){
exit(print_r(func_get_args()));
}

Тем не менее я получаю то же самое ржавое уведомление об ошибке PHP:

(!) Ошибка разбора: синтаксическая ошибка, неожиданный » sdds; ‘(T_ENCAPSED_AND_WHITESPACE) в N: \ wamp \ www \ project \ errorhandler \ hoi.php в строке 3
Стек вызовов

1 0.0003 240376 {main} () .. \ errorHandler.php: 0
Array () 1

0

Решение

Скрипт, который вы используете для проверки обработчика ошибок, содержит синтаксическую ошибку. Поэтому скрипт не выполняется, и ваш обработчик ошибок никогда не используется.

Таким образом, php-файл, содержащий обработчик ошибок, должен быть синтаксически правильным. Любые другие включаемые файлы после включения обработчика ошибок будут использовать ваш обработчик ошибок.

0

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

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