禁用部分页面php的警告和通知

Posted

技术标签:

【中文标题】禁用部分页面php的警告和通知【英文标题】:Disable warnings and notices for part of a page 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 它,但是将专业版的价格加起来会让您获得更稳定的版本而没有问题吗?目前正在为您寻找最快的解决方案。 【参考方案1】:

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

echo @$myunsetvariable;

【讨论】:

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

【讨论】:

以上是关于禁用部分页面php的警告和通知的主要内容,如果未能解决你的问题,请参考以下文章

Wordpress - The7 模板 - 在每个页面上我都有 4 个警告并且不知道如何在菜单或 php 站点/内容中禁用它

PHP 禁用浏览器升级通知/警告

仅对部分代码禁用 PHP 警告

当数据在javascript codeigniter php中使用ajax成功功能时,如何禁用页面重新加载?

禁用某些页面的 HTTP GET php

禁用浏览器升级通知/警告