我正在修复在我之前制作的一些旧代码,我花了大约2个小时来查找错误,因为它被@
隐藏了。
这是一种在PHP中停用它的方法吗?
display_errors
不会被@
答案 0 :(得分:3)
答案 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给定
重要的是要注意导致脚本终止的由@
抑制的严重错误将无法通过这种方式被发现。在这种情况下,如果您的脚本意外死亡且没有错误消息,那么这应该是在您的代码中搜索@
的一个很好的指示。
目前,“@”错误控制运营商前缀甚至会禁用 错误报告将终止脚本的严重错误 执行。除此之外,这意味着如果你使用“@”来 抑制某个功能的错误,并且它不可用 或者错误输入,脚本将在那里死亡 指示为什么。