允许 ob_get_contents 并获取警告但不在前端显示

allow ob_get_contents and to grab warnings but not display them in front end

我在 CentOS 机器上用 PHP7.2 运行 开发了一个脚本,我一直在努力获得 ob_get_contents上班。

在 php.ini 文件中,我已将 display_errors to Off 和 error_reporting 设置为:

error_reporting = E_ALL & ~E_NOTICE

这是执行的代码:

    ob_start();
    $result = $db->query($query); //This executes a query
    $report_error = ob_get_contents();
    if (!$result)
                {
                    log_error("Query Failed: ".$report_error);
                    return false;
                }

   ob_end_flush();
   ob_start();

将显示错误设置为 On works 但我不想在前端向用户显示错误,这不是我们在生产中想要的东西所以不确定是否我需要更改 php.ini 文件中的另一个设置以捕获警告但不在前端显示它们?

谢谢

您想要display_errors = On,然后在使用error_reporting()缓冲错误时有选择地报告错误。

在您的应用程序开始时,您需要 error_reporting(0).

此外,不要刷新 将输出发送到浏览器的缓冲区。你想 clean 缓冲区 ob_end_clean().

或者 getclean 合二为一:

ob_start();
error_reporting('E_ALL & ~E_NOTICE');  //report errors
$result = $db->query($query);
$report_error = ob_get_clean();
error_reporting(0);                    //report NO errors
if (!$result)
            {
                log_error("Query Failed: ".$report_error);
                return false;
            }

但是,该数据库 class 可能实现了一种检索错误的方法,而无需经过此过程。