PHP错误处理 - “errorHandler缺少参数”
问题描述:
我试图第一次设置错误处理。
它确实工作并报告错误(如果有),但出于某种原因,它总是显示错误处理函数本身的“缺少参数”的错误。请注意我的错误处理功能是在一个单独的文件中,包括索引页,我不知道如果是这样的问题:SPHP错误处理 - “errorHandler缺少参数”
这里是我的错误处理功能
function errorHandler($errno, $errstr, $error_file, $error_line) {
if(isset($errstr)) {
# There is an error, display it
echo $errno." - ".$errstr." in ".$error_file." at line ".$error_line."<br>";
} else {
# There isn't any error, do nothing
return false;
}
}
// We must tell PHP to use the above error handler.
set_error_handler("errorHanlder");
这里是索引页
<!-- # Error Handler -->
<? if(errorHandler()) { ?>
<section id="error-handler">
<?=errorHandler();?>
</section>
<? } ?>
下面是结果在浏览器(记住,没有PHP的错误,所以这个错误处理程序不应该输出任何东西 - 这是我不明白
2 - Missing argument 1 for errorHandler(), called in index.php on line 20 and defined in inc/arcError.fnc.php at line 10
2 - Missing argument 2 for errorHandler(), called in index.php on line 20 and defined in inc/arcError.fnc.php at line 10
2 - Missing argument 3 for errorHandler(), called in index.php on line 20 and defined in inc/arcError.fnc.php at line 10
2 - Missing argument 4 for errorHandler(), called in index.php on line 20 and defined in inc/arcError.fnc.php at line 10
任何想法的原因是为什么PHP报告缺少的参数?
答
要调用零参数的函数...
<?=errorHandler();?>
为什么你总有需要打电话了吗?
并且在您的代码中有几个拼写错误:将“Hanlder”替换为“Handler”。
有没有需要做的是:当有错误
if(isset($errstr)) {
你的错误处理功能被自动调用(且只有在这种情况下!)。 $ errstr是这个函数的一个参数,它在函数执行时总是被设置。
新代码:
function errorHandler($errno, $errstr, $error_file, $error_line) {
# There is an error, display it
echo "<section id='error-handler'>$errno - $errstr in $error_file at line $error_line</section><br>";
}
// We must tell PHP to use the above error handler.
set_error_handler("errorHandler");
我想了解这一切的作品。 如果我将$ errno,$ errstr,$ errfile,$ errline的参数传递给errorHandler,那么它会输出相同的结果。修正了错别字 – Clarkey 2012-07-07 12:00:28
Jocelyn,谢谢你的回答。我明白错误处理程序如何工作的逻辑..我想出于某种原因,我不得不调用函数INCASE它有一个错误,否则当出现错误时它不会显示错误。现在我已经对它进行了排序,但是如何我可以告诉PHP在哪里显示错误? – Clarkey 2012-07-07 12:05:23
我看到你的改变,以回应,这是有道理的。谢谢你的帮助哥们! –
Clarkey
2012-07-07 12:08:09