【问题标题】:Stop error message from php function gzuncompress停止来自 php 函数 gzuncompress 的错误消息
【发布时间】:2012-08-31 21:34:41
【问题描述】:

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

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

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

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

非常感谢!

【问题讨论】:

  • 你得到了什么? @ 仅阻止显示E_WARNING 级别的消息。
  • 我认为这个问题可能是一个未声明的函数,与 gzuncompress 无关。也许缺少系统库作为替代方案?
  • 我在控制台上收到一行“数据错误”,仅此而已。在这些情况下,gzuncompress 也返回 null。
  • 好吧,上面的单行代码给出了错误消息,它适用于正确压缩的数据,但我不确定我是否遗漏了什么。
  • @PraveenKumar - @ 压制一切。甚至是严重错误。它基本上在通话期间设置“error_reporting(0)”。 php.net/manual/en/language.operators.errorcontrol.php

标签: php error-suppression


【解决方案1】:

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

推理:

  1. ob_start() / ob_end_clean() 是浪费时间 - 这不会抑制警告消息,只会抑制您通过回声等输出的内容。所以删除这两行。

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

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

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

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

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

【讨论】:

  • 你说得对,可能就是这样。我正在使用 HipHop php 运行 php,它可能与它们有关。所以我上面给出的代码不会给你错误?谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-27
  • 1970-01-01
  • 2012-02-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多