【问题标题】:How to disable notice outputs in PHP?如何在 PHP 中禁用通知输出?
【发布时间】:2013-12-20 14:17:25
【问题描述】:

我有一个(本地)网络服务器,其配置显示 PHP 的所有错误(因为这样调试更容易)。

由于某种原因,PHP 文件中存在一个小问题,导致如下错误:

Notice: Constant ADODB_BAD_RS already defined in /full/path/to/adodb.inc.php on line 23

由于这些通知并不有趣,至少对于我所包含的库而言,我想以某种方式忽略它们。

目前我正在这样做:

echo "<!-- Ignore some useless warning";
require_once "path/to/adodb.inc.php";
echo "End ignoring warning -->";

这适用于我生成的 HTML,尽管 警告仍然出现在生成的 HTML 代码中

有没有办法从输出中删除这些行,而不必牺牲我自己的代码看到类似通知的可能性?

【问题讨论】:

    标签: php debugging output


    【解决方案1】:

    如果您确定要禁用通知,那么您可以在require_once 之前或其他引发通知/错误的函数之前放置一个@ 符号。

    【讨论】:

    • @sign 创造了奇迹!但是,如果我知道该代码的使用有错误(编辑:例如,当我在给该文件中定义的函数的参数中写入错误时),它仍然会显示,不是吗?
    • 那么@符号会禁用该函数的所有消息,其中@符号放在前面,包括错误。所有其他错误和通知仍将显示。
    【解决方案2】:

    使用error_reporting 可以实现。

    error_reporting(0); // disable errors
    require_once "path/to/adodb.inc.php";
    error_reporting(E_ALL); //enable errors again
    

    【讨论】:

    • 这正是在脚本前面添加@ 所做的。
    【解决方案3】:

    error_reporting(E_ALL ^ E_NOTICE); 是要走的路。

    这只会禁用通知。

    【讨论】:

      【解决方案4】:

      如果要删除所有警告,可以在 web 服务器的 php.ini 文件中将 display_errors 设置为 0。或者您可以使用函数error_reporting() 并传递0 或您可能想要的任何其他选项。 Here is PHP's manual for error reporting

      【讨论】:

        【解决方案5】:

        您可以做的最好的事情是使用error_reporting(0),您也可以使用Output Control Functions,但不推荐使用它们。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-04-01
          • 2012-01-28
          • 1970-01-01
          • 2020-11-13
          相关资源
          最近更新 更多