Обработка ошибок

Опубликовал: Tuesday, March 20, 2024 в категории HTML | Пока нет комментариев

Задать степень обработки и протоколирования ошибок позволяет директива

error_reporting в файле php.ini:

error_reporting = E_ALL & ~E_NOTICE

Перечислим значения директивы: E_ALL (все ошибки), E_ERROR (фатальные ошибки), E_RECOVERABLE_ERROR, E_WARNING (предупреждения времени вы- полнения), E_PARSE (синтаксические ошибки), E_NOTICE (замечания, напри- мер, о том, что переменная не инициализирована), E_STRICT, E_CORE_ERROR, E_CORE_WARNING, E_COMPILE_ERROR, E_COMPILE_WARNING, E_USER_ERROR, E_USER_WARNING, E_USER_NOTICE.

Знак ~ (тильда), указанный перед значением, свидетельствует о том, что вы-

вод сообщений об ошибке данного типа выключен.

В директиве можно использовать следующие двоичные побитовые операторы:

? & — двоичное И;

? | — двоичное ИЛИ.

error_reporting = E_ALL & ~E_NOTICE | E_STRICT

Если доступа к файлу php.ini нет (на виртуальном хостинге доступа точно не будет), то в сценарии можно использовать функцию error_reporting():

error_reporting(E_ALL & ~E_NOTICE);

В качестве параметра функции error_reporting() можно указать число:

? в PHP 5.2:

6135 = E_ALL & ~E_NOTICE

6143 = E_ALL

8183 = E_ALL & ~E_NOTICE | E_STRICT

8191 = E_ALL | E_STRICT

? в PHP 5.3:

30711 = E_ALL & ~E_NOTICE

30719 = E_ALL

32759 = E_ALL & ~E_NOTICE | E_STRICT

32767 = E_ALL | E_STRICT

Предыдущий пример можно заменить на следующий код: error_reporting(6135); // в PHP 5.2 error_reporting(30711); // в PHP 5.3

На виртуальном хостинге принято не выводить ошибки в Web-браузер, а за- писывать их в журнал ошибок error.log. В этом случае при возникновении фатальной ошибки пользователь увидит белый экран, а не сообщение об ошибке.

Отключить вывод ошибок в Web-браузер позволяет директива

display_errors в файле php.ini:

display_errors = Off

А включить вывод сообщений об ошибках в журнал ошибок позволяет ди-

ректива log_errors:

log_errors = On

Задать путь к файлу, в который будут выводиться ошибки, позволяет дирек-

тива error_log:

error_log = ‘C:/php5/err.txt’

Изменить эти директивы из скрипта можно с помощью функции ini_set():

error_reporting(E_ALL); ini_set(‘display_errors’, ‘Off’); ini_set(‘error_log’, ‘err.txt’); ini_set(‘log_errors’, ‘On’);

$file = fopen(‘file.txt’, ‘r’);

5.22.5. Инструкция or die()

Для обработки критических для всей программы ошибок можно использо- вать инструкцию or die(). В круглых скобках может быть указано сообще- ние об ошибке или функция, которая будет вызвана в случае возникновения ошибки. После вывода сообщения или вызова функции выполнение скрипта прекратится:

@$file = fopen("file.txt", "r") or die("Ошибка");

или

@$file = fopen("file.txt", "r") or die(err_msg());

function err_msg() {

echo "Ошибка";

}

Источник: Прохоренок Н. А. HTML, JavaScript, PHP и MySQL. Джентльменский набор Web-мастера. — 3-е изд., перераб. и доп. — СПб.: БХВ-Петербург, 2010. — 912 с.: ил. + Видеокурс (на CD-ROM) — (Профессиональное программирование)

Похожие посты:

Комментировать

Your email address will not be published. Required fields are marked *