如何显示像Codeigniter的PHP错误?

时间:2015-03-29 09:51:02

标签: php

我正在使用核心PHP开发PHP在线IDE。当用户测试php代码时,如何显示像CodeIgniter这样的PHP错误?

Screenshot

1 个答案:

答案 0 :(得分:0)

我不能说完全喜欢codeignitor,因为我从未使用它,但是:

方法1

您可以编辑php.ini

; String to output before an error message.
error_prepend_string = "<font color=ff0000><b>An Error Occured</b></font><i> Found an error as follows:</i><br><code>"

; String to output after an error message.
error_append_string = "</code>"

你可以编辑HTML并使用某些方法(比如js,但我不知道这是不是一个好主意)让它看起来更好

方法2

使用自定义处理程序:

function myErrorHandler($ errno,$ errstr,$ errfile,$ errline) {

$sev = "";

$errorType = array (
           E_ERROR            => 'ERROR',
           E_WARNING        => 'WARNING',
           E_PARSE          => 'PARSING ERROR',
           E_NOTICE         => 'NOTICE',
           E_CORE_ERROR     => 'CORE ERROR',
           E_CORE_WARNING   => 'CORE WARNING',
           E_COMPILE_ERROR  => 'COMPILE ERROR',
           E_COMPILE_WARNING => 'COMPILE WARNING',
           E_USER_ERROR     => 'USER ERROR',
           E_USER_WARNING   => 'USER WARNING',
           E_USER_NOTICE    => 'USER NOTICE',
           E_STRICT         => 'STRICT NOTICE',
           E_RECOVERABLE_ERROR  => 'RECOVERABLE ERROR'
           );

if(!isset($errorType($errno))
{ 
    $sev = "Unknown";
}
else
{
    $sev = $errorType[$errno];
}
echo "<div style= 'border-style: solid;border-color: #98bf21;'>";
echo "<b>A PHP Error was enccounter</b>";
echo "<li>Severity: $sev";
echo "<li>Message: $errstr";
echo "<li>Filename: $errfile";
echo "<li>Line NUmber: $errline";
echo "</div>";
/* Don't execute PHP internal error handler */
return true;
}

function shutdown() {

$isError = false;

if ($error = error_get_last()){
switch($error['type']){
    case E_ERROR:
    case E_CORE_ERROR:
    case E_COMPILE_ERROR:
    case E_USER_ERROR:
        $isError = true;
        break;
    }
}

if ($isError){
    myErrorHandler($error['type'],$error['message'],$error['file'],$error['file'])
    }
}

并将其设为

set_error_handler("myErrorHandler");
register_shutdown_function('shutdown');

用这个检查:

un_defined_function(100);

More Info