PHP-обработчик ошибок не работает

0

Я нашел фрагмент кода здесь, в 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

Теги:
class

1 ответ

0

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

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

  • 0
    Я специально добавил синтаксическую ошибку. Чтобы обмануть Erorr. Но если я переместить его во включенный файл, он также не будет работать. <?php include('function.errorhandler.class.php'); $error = new class_error(); include('hi.php'); ?> в <?php include('function.errorhandler.class.php'); $error = new class_error(); include('hi.php'); ?>
  • 0
    Ну, тогда другой вопрос. Кажется, ваш обработчик ошибок не работает вообще. Просто задайте новый вопрос. Вы не можете задавать новые вопросы в комментарии. В любом случае, вы поняли, что сделали неправильно? (Совет, действительно убедитесь, что ваш класс ошибок включен, например, поместите в него эхо).

Ещё вопросы

Сообщество Overcoder
Наверх
Меню