2012-07-07 145 views
0

我试图第一次设置错误处理。
它确实工作并报告错误(如果有),但出于某种原因,它总是显示错误处理函数本身的“缺少参数”的错误。请注意我的错误处理功能是在一个单独的文件中,包括索引页,我不知道如果是这样的问题: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报告缺少的参数?

回答

7

要调用零参数的函数...

<?=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"); 
+0

我想了解这一切的作品。 如果我将$ errno,$ errstr,$ errfile,$ errline的参数传递给errorHandler,那么它会输出相同的结果。修正了错别字 – Clarkey 2012-07-07 12:00:28

+0

Jocelyn,谢谢你的回答。我明白错误处理程序如何工作的逻辑..我想出于某种原因,我不得不调用函数INCASE它有一个错误,否则当出现错误时它不会显示错误。现在我已经对它进行了排序,但是如何我可以告诉PHP在哪里显示错误? – Clarkey 2012-07-07 12:05:23

+0

我看到你的改变,以回应

,这是有道理的。谢谢你的帮助哥们! – Clarkey 2012-07-07 12:08:09