【问题标题】:How do I disable error suppression "@" operator in PHP? [duplicate]如何在 PHP 中禁用错误​​抑制“@”运算符? [复制]
【发布时间】:2019-09-19 13:25:49
【问题描述】:

我有一个代码是鲁莽编写的(由以前的开发人员),并且错误抑制运算符“@”被广泛使用。现在我必须调试一个错误,它证明了一个真正的 PITA。

我已经尝试过设置error_reportingdisplay_errors 之类的常规方法,但仍然尊重错误抑制(也许它应该是这样的)。

我也曾想过使用 regex 进行搜索和替换,但我保留了它以备不时之需。

现在我的问题是,有没有办法可以覆盖错误抑制运算符?

【问题讨论】:

  • 任何自定义错误处理程序都可以,例如只是set_error_handler("var_dump"); 甚至。
  • 这是一个很好的解决方案,介意添加它作为答案吗?

标签: php debugging error-handling error-suppression


【解决方案1】:

好的,这是一个救命稻草,如果您安装了 xdebug,则有一个 flag 可以做到这一点,它会抑制错误抑制器:) 有效地使调试这个地狱般的代码变得更容易。

xdebug.scream=1

【讨论】:

    【解决方案2】:

    如果你想删除所有的错误抑制器,同时对错误抑制器的滥用有一些不好的做法......

    您需要使用代码编辑器并替换代码中的所有'@$',然后您将获得所有错误跟踪器...您需要和不需要,然后进行调试。

    【讨论】:

    • 感谢您的回答,我已经在问题中提到我正在寻找这种方法以外的其他方法,但是,谢谢。顺便说一句,这个方法充其量似乎很笨拙。
    • 在我看来,快速消除继承的不良做法并立即开始调试任何警告或错误是最好的解决方案。我向你保证,从长远来看,这将是我已经通过的最佳方式。
    • php 中的 suprecion 错误嵌入在编译时间目前无法配置。您可以使用的另一件事是严格的 PHP 模式 declare (strict_types = 1);
    • 我同意,有这些错误抑制本身就是一种非常糟糕的做法,但是搜索和替换是超级不可靠的,可以替换 cmets 和其他东西。因此它在我的首选选项列表中排在最后。
    • 那么您必须在继续之前评估您的情况,调试是否或是否应该手动进行,而不是通过脚本或在 Apache 编译中部署的功能的折旧或您拥有的 php 引擎...针对,您可以使用“搜索全部”进行检查,因为我提到了字符串“@$”并检查文件是否提交给评论;在评论中将“@$”替换为“$”应该不是最大的问题......
    猜你喜欢
    • 2015-09-03
    • 2011-11-14
    • 2017-03-08
    • 2021-10-30
    • 1970-01-01
    • 2018-08-08
    • 1970-01-01
    • 2018-01-21
    • 2013-12-04
    相关资源
    最近更新 更多