Надежно читать значение PHP display_errors - PullRequest
1 голос
/ 29 января 2010

В моем обработчике ошибок PHP я хочу сделать что-то вроде:

if (ini_get('display_errors') IS ON)) {
 // show debug info
} else {
 // show just "oops!"
}

Я просмотрел документы и прочее, но не могу выяснить, каковы возможные значения для display_errors (такие как «on», 0, «Yes») и что он делает для какого значения.

Что я должен поставить вместо «IS ON», чтобы надежно прочитать это значение?

Ответы [ 3 ]

3 голосов
/ 29 января 2010

Строковое представление значений можно получить с помощью ini_get () , для значений, которые могут быть установлены display_errors, либо true\false, 0\1 и On\Off. Но когда пользователь устанавливает свои php.ini, чаще используется 1 или On

if (ini_get('display_errors') == "1") {
 // show debug info
}

или для проверки ВСЕХ дел, вы можете выполнить коммутационный ящик

ini_set('display_errors', 1);
switch (ini_get('display_errors')) {
  case "1":
  case "On":
  case "true":
    // show debug info
}

Если вы предпочитаете подход сравнения равенства, обратите внимание, что ini_get возвращает значение String 1, если вы проверяете возвращенное значение с помощью ini_get, используя == со значением int 1, это становится правдой. Если вы используете ===, он проверяет, равны ли они и имеют ли они одинаковый тип. String не тот же тип, что и int, поэтому он вернет false.

1 == "1"; // in PHP, this returns true, it doesn't check the type.
1 ===  "1"; // would be false, this however checks the type. 

Используя ini_get('display_errors'), вы можете проверять такие значения, как TRUE, FALSE и четный NULL. Они будут возвращать логическое значение либо 0, равное false, а все, кроме 0, оценивается как true.

if (2) {
 echo "2 is true!"; // echos "2 is true!"
}

Я видел ваш комментарий о несоответствии, поэтому я решил проверить его сам, вот что я использовал

<?php
  ini_set('display_errors', 1);
  $verbose = ini_get('display_errors');
  echo $verbose; // echo's 1

  // just to test its return values.
  if ($verbose) { 
     echo "verbose is true";  // echos "verbose is true"
  }

  ini_set('display_errors', 0);
  $verbose = ini_get('display_errors');
  echo $verbose; // echo's 0

  if ($verbose) {
     echo "verbose is not true"; // does not get evaluated
  }
?>

Этот ответ немного длинен, но я надеюсь, что это то, что вам нужно.

2 голосов
/ 21 марта 2013

Я использую следующий код:

if (in_array(strtolower(ini_get('display_errors')), array('1', 'on', 'true')) {
  // is enabled
} else {
  // is disabled
}
2 голосов
/ 29 января 2010

По умолчанию это «1» в соответствии с документацией. Тем не менее, вы можете проверить обратное, что оно не выключено:

!= FALSE или !empty()

if (ini_get('display_errors') != FALSE)) 
{
     // show debug info
} 
else 
{
     // show just "oops!"
}

Или, как указал Энтони, вы можете просто проверить 1

if(ini_get('display_errors') == 1))

Возможно, вы также захотите проверить error_reporting, так как это еще одна распространенная настройка, которая используется для управления отображением ошибок, хотя ее значение немного отличается от display_errors

if(error_reporting() != 0)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...