【问题标题】:Disable warnings and notices for part of a page php禁用部分页面php的警告和通知
【发布时间】:2012-09-06 20:11:02
【问题描述】:

我们正在尝试添加 PHP 库 PHPDocx,以便通过我们的 php 应用程序动态制作 Microsoft Word 文档。但是,他们的代码通过了一些警告和通知,这些警告和通知正在炸毁我们的错误日志。我们将站点的错误报告设置为E_STRICT,并希望仅针对这些文件将错误报告和日志记录更改为E_ERROR。不幸的是,我们的自定义模板系统(设置错误报告)是在任何需要或引用 PHPDocx 库之前加载的。

我已尝试使用error_reporting(E_ERROR)ini_set('display_errors', 0),但我仍然收到写入错误日志的警告和通知。我不知道是不是因为我们所有的设置代码都是先运行的,但我想做的只是从 PHPDocx 文件中写入致命错误,但在网站的其余部分保留E_STRICT

感谢您的帮助。

【问题讨论】:

  • 我认为一个编码良好的脚本不应该抛出任何错误、警告或通知,但许多人更喜欢设置 error_reporting 来忽略通知。这不是一个好的做法,因为通知有时会提示脚本设计中存在严重错误。
  • 我同意 Jocelyn,但我对 PHPDocx 编辑他们的代码以停止抛出通知和警告的做法不够熟悉。我不确定文件之间有什么依赖关系,以及通过更改可能会破坏什么。这就是为什么我只想忽略他们的东西中的通知和错误。
  • 我很好奇它抛出了什么错误......考虑到有付费版本,你会认为他们会在内部处理它们。
  • @Dave 主要是未定义的索引错误。例如,即使我们没有为图表传递任何信息(因为我们不需要),他们也会在其文档对象的构造函数中调用图表构建函数。仅通过普通的 createDocx 函数就会抛出大约 500 个左右的未定义索引。有一些未定义的变量错误也会破坏某些功能。不幸的是,这是一个构建不佳的库,除了由 IDE 插入的 autocmets 之外几乎没有任何文档,但我们目前仍坚持使用它。
  • Unfortunately, this is a poorly built library with almost no documentation - 哎呀......这是“免费”版本吗?我反对 siggesting 它,但是将专业版的价格加起来会让您获得更稳定的版本而没有问题吗?目前正在为您寻找最快的解决方案。

标签: php logging error-handling error-reporting phpdocx


【解决方案1】:

如果它们出现的次数很少,您可以在任何函数之前使用@ 符号专门抑制它们。例如;

echo @$myunsetvariable;

【讨论】:

  • 不幸的是,到目前为止,我知道有大约 500 个未定义的索引警告。他们的库中大约有 7000 个文件,几乎不可能遍历每个函数并添加错误抑制器。我当然不会说他们开发了一个可持续且可靠的解决方案,但它确实产生了我们正在寻找的结果(减去通知/警告)。
  • 您对有效包含文件的评论。我在所有包含之后更改了错误报告,现在我没有得到所有未定义的索引错误。谢谢。
【解决方案2】:
error_reporting(E_ALL ^ E_NOTICE ^ E_WARNING);
ini_set('display_errors', 1);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-01-22
    • 2011-06-05
    • 2012-01-28
    • 1970-01-01
    • 2020-02-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多