从php函数gzuncompress停止错误消息

时间:2012-09-07 01:42:55

标签: php error-suppression

以下php代码输出控制台“数据错误”。发生这种情况的原因是已知问题,但我想摆脱错误消息。

<?php   
    gzuncompress("foo");
?>

我在网上搜索了如何在php上抑制错误消息并尝试了以下操作,但没有成功:

<?php   
    error_reporting(0); 
    ini_set("display_errors",0);
    ob_start(); 
    @gzuncompress("foo");
    ob_end_clean();
?>

非常感谢!

1 个答案:

答案 0 :(得分:2)

这很可能是您指定了自定义错误处理程序。

推理:

  1. ob_start()/ ob_end_clean()是浪费时间 - 这不会压制警告信息,只会通过回声等方式输出内容。所以放弃这两行。

    < / LI>
  2. error_reporting(0)应该足够 - 这表示“关闭所有错误”。您不会在错误日志或屏幕上看到它。但仍会调用自定义错误处理程序。

  3. “display_errors”将阻止它进入屏幕,但它会出现在您的日志文件中。

  4. @也会压制消息 - 本质上它会暂时设置“error_reporting(0)”。但仍会调用cusom错误处理程序。

  5. 因此,解决所有这些问题的唯一方法是自定义错误处理程序。即使你用@来压缩错误或者有error_reporting(0),它仍会被调用。客户错误处理程序本身应调用error_reporting(),如果“0”应确保它不会产生错误。它可能有它自己的“保持缓冲区,吐出我的消息然后恢复缓冲区”代码,这就是为什么它绕过ob_start()。

    只有我能想到的原因:我刚刚通过控制台和webbrowser / apache运行你的代码,并且它很干净 - 没有任何警告显示等,如你所愿。