Отчеты об ошибках PHP с помощью config

63
8

Привет, я пытаюсь заблокировать определенные ошибки_обновления вещей по переменным конфигурации

<?php

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

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

Но, как вы можете видеть, когда я делаю другое открытие error_reporting, он заменит старый. Как я могу блокировать, но только если конфигурации будочки истинны и только одна, если только одна конфигурация установлена в true?

спросил(а) 2021-01-25T14:10:33+03:00 4 месяца, 3 недели назад
1
Решение
64

Подходите к этому как вложенная логика. Сначала проверьте $config['errors'] и включите или отключите error_reporting с E_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_DEPRECATED и E_STRICT

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

ответил(а) 2021-01-25T14:10:33+03:00 4 месяца, 3 недели назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема