用PHP隐藏的错误

时间:2014-02-24 21:12:27

标签: php debugging

我正在修复在我之前制作的一些旧代码,我花了大约2个小时来查找错误,因为它被@隐藏了。

这是一种在PHP中停用它的方法吗?

display_errors不会被@

隐藏错误

2 个答案:

答案 0 :(得分:3)

您可以按照in the php documentation for error control operator

所述定义自定义错误处理程序

答案 1 :(得分:2)

您可以启用track_errors以将error control operator@)生成的任何错误保存到PHP变量。您可以在php.ini文件中设置track_errors或使用ini_set

  

如果启用了track_errors功能,则会生成任何错误消息   表达式将保存在变量$php_errormsg中。这个   变量将在每个错误上被覆盖,因此如果需要,请尽早检查   使用它。

实施例

<?php
ini_set('track_errors', true);
@strpos();
echo $php_errormsg;

将输出:

  

strpos()需要至少2个参数,0给定

注意事项

重要的是要注意导致脚本终止的由@抑制的严重错误将无法通过这种方式被发现。在这种情况下,如果您的脚本意外死亡且没有错误消息,那么这应该是在您的代码中搜索@的一个很好的指示。

  

目前,“@”错误控制运营商前缀甚至会禁用   错误报告将终止脚本的严重错误   执行。除此之外,这意味着如果你使用“@”来   抑制某个功能的错误,并且它不可用   或者错误输入,脚本将在那里死亡   指示为什么。