PHP,如何在特定的地方发生错误

问题描述:

您知道PHP错误总是出现在页面的最顶端。有没有办法压制这个并把它变成一个$ var?然后你可以把它放在页面的某个地方。PHP,如何在特定的地方发生错误

+7

理想情况下,你会使其产生错误或警告编写代码。这不仅是可能的,但强烈建议作为良好的做法。 – 2012-03-10 02:28:09

是的,你可以set your own error handler拦截并做这些错误,除了简单地输出他们无论发生在哪里。但我不认为在页面上优雅地显示PHP错误是非常有用的。 PHP错误并不意味着很漂亮,它们根本不是为了发生。如果你看到一个,它应该尽可能地震撼,你应该尽快修复它。它们意味着在开发过程中提供帮助。试图让它们变得漂亮起来就是把时间花在代码的错误部分上。

在生产中,这些错误应记录到日志文件中,而不是在页面上可见的输出。

+0

这是一种一次性使用。 '$ php_errormsg'可以让你单独处理每个错误,而不必在任何时候重置处理程序来处理错误。 – Jon 2012-03-10 02:35:57

+0

但是'$ php_errormsg'要求你预测错误发生的地方,并在处理完错误后清理变量。这是*更多*“一次使用”,然后是一个自定义的全局错误处理程序。而在我看来,OP正在寻求一个全局错误处理程序。 – deceze 2012-03-10 02:38:18

$php_errormsg保存了以前的错误,即使是被抑制的错误。

@fopen('foo.txt', 'w'); 

echo $php_errormsg; // You can put this anywhere you want the error to display 

如果你认为你会有多个错误,那么你可以将这些错误存储在一个数组中。

$errors = array(); 

for($files as $f) { 
    @fopen($f, 'w'); 
    $errors[] = $php_errormsg; 
} 

然后,你可以打印出所有你的错误:

print_r($errors); 
    //or 
for($errors as $e) { 
    echo $e; 
} 
+2

php.ini中的'log_errors = on'和'display_errors = off'非常清晰。 – ThiefMaster 2012-03-10 02:38:50