Обработка ошибок
Задать степень обработки и протоколирования ошибок позволяет директива
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) — (Профессиональное программирование)
Похожие посты:
- Представление табличных данных в привлекательной и удобной форме (0)
- Кросс-броузерные решения (0)
- Интерпретация сообщений, выводимых инструментом W3C Validator (0)
- Подчеркивание заголовков (0)
- Конфигурация URL и слабая связанность (0)
- Красиво отформатированные страницы ошибок в Django (0)
- Усовершенствование примера обработки формы (0)