检测发生错误的行

时间:2014-03-01 14:42:48

标签: php line notice

是否有可能检测到php生成错误的代码行? 例如,当有“通知”警报时,它将返回:

Notice: Undefined index: XX in / home / YY.php on line 17.

2 个答案:

答案 0 :(得分:0)

您可以使用set_error_handler注册错误处理程序:

set_error_handler(function($errno, $errstr, $errfile, $errline) {
    $lines = file($errfile);
    $line = $lines[$errline - 1];
    print "Line with error: $line";
});

答案 1 :(得分:0)

如果您需要在通知文本中放置行,您也可以使用__LINE__

$Line = debug_backtrace()[0]['line'];

如果你有PHP 5.4 - 或者(如果你有较旧的PHP)

$Line = debug_backtrace();
$Line = $Line[0]['line'];

或者,如果您需要更多调试信息(当然也可以在PHP 5.4中使用)

$Debug = debug_backtrace();
$Line = $Debug[0]['line'];

您也可以使用高于0的数字 - 但大多数情况下它是无用的。此外,您应该确保debug_backtrace给出的数组有多个项目(该数组也包含键1或更大的项目)。