Я нашел фрагмент кода здесь на 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
Скрипт, который вы используете для проверки обработчика ошибок, содержит синтаксическую ошибку. Поэтому скрипт не выполняется, и ваш обработчик ошибок никогда не используется.
Таким образом, php-файл, содержащий обработчик ошибок, должен быть синтаксически правильным. Любые другие включаемые файлы после включения обработчика ошибок будут использовать ваш обработчик ошибок.
Других решений пока нет …