使用config进行PHP错误报告

时间:2014-06-22 20:07:23

标签: php

您好我试图在配置变量上阻止某些error_reporting事件

<?php

$config['warnings'] = false;
$config['errors'] = false;

if (!$config['warnings'])
{
     error_reporting(E_ERROR | E_PARSE);
}
if (!config['errors'])
{
     error_reporting(0);
}
?>

但正如你可以看到我做另一个打开的error_reporting语句时,它将替换旧的语句。我怎么能阻止,但只有当展位配置为真,只有一个如果只有一个配置设置为真?

1 个答案:

答案 0 :(得分:1)

将其作为嵌套逻辑进行处理。首先检查$config['errors']并使用error_reportingE_ALL启用或停用0

然后E_WARNING设置中减去 error_reporting,方法是调用error_reporting()以获取当前值。

if ($config['errors']) {
  // Enable all
  error_reporting(E_ALL);

  // Then subtract warnings from the current value
  // by calling error_reporting() as its own argument
  if (!$config['warnings']) {
    error_reporting(error_reporting() & ~E_WARNING);
  }
}
else {
  // Or disable everything.
  error_reporting(0);
}

你没有特别提到E_NOTICE,但我怀疑你也想要那些残疾人。

error_reporting(error_reporting() & ~E_WARNING & ~E_NOTICE);

如果您希望从略低于E_ALL的内容开始,则可能需要删除E_DEPRECATEDE_STRICT

if ($config['errors']) {
  // Enable all (but a little less than all)
  error_reporting(E_ALL & ~E_DEPRECATED & ~E_STRICT);
  // Then check warnings, etc...
}