0

我在 StackOverFlow 上找到了一段代码,用于错误处理程序。我面临的问题与主题启动者所问的完全一样。

这些错误根本不会被报告。有点令人沮丧,因为我真的需要一个像样的错误处理程序。我从 Joseph Lenton 那里找到了一个漂亮的,但它绝对破坏了我想做的一切所以我需要创建自己的适合我的。

问题:

它不报告任何错误??: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 生成错误。:o

所以让我们回到基础,因为即使是最简单的事情也似乎不可能再次发挥作用。

<?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 数组 ( ) 1

4

1 回答 1

0

用于测试错误处理程序的脚本包含语法错误。因此脚本不会执行,并且永远不会使用您的错误处理程序。

所以包含错误处理程序的 php 文件在语法上应该是正确的。启用错误处理程序后,任何其他包含文件都将使用您的错误处理程序。

于 2015-02-16T10:30:59.950 回答