我在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生成错误。 :○
所以,让我们回到基础,因为即使最简单的事情也无法再发挥作用。
<?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;第3行的N:\ wamp \ www \ project \ errorhandler \ hoi.php中的'(T_ENCAPSED_AND_WHITESPACE) 调用堆栈
1 0.0003 240376 {main}().. \ errorHandler.php:0 Array()1
答案 0 :(得分:0)
用于测试错误处理程序的脚本包含语法错误。因此,脚本不会执行,并且永远不会使用您的错误处理程序。
因此包含错误处理程序的php文件在语法上应该是正确的。启用错误处理程序后,任何其他包含文件都将使用您的错误处理程序。