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 生成エラーを取得し続けます。: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) in 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 に答える