#10. 3 php Генерация пользовательских ошибок. Функции trigger_error() и errror_log()
Primary tabs
Вывод сообщения об ошибке в окно браузера (trigger_error()
)
Сгенерировать ошибку и вывести сообщение о ней в окно браузера можно с помощью функции
bool trigger_error(string $error_msg, int $error_type = E_USER_NOTICE)
Первым аргументом является текст сообщения об ошибке, а вторым — её тип. Данная функция позволяет сгенерировать ошибки только пользовательских типов:
E_USER_ERROR
— фатальная ошибка, вызывает прерывание скрипта;E_USER_WARNING
— предупреждение;E_USER_NOTICE
— уведомление о чем-то, что может привести к ошибке;E_USER_DEPRECATED
— уведомление об использовании устаревших конструкций.
Функция возвращает true
всегда, когда передано корректное значение $error_type
, в противном случае возвращает false
(ошибка не генерируется).
Пример 1.
<?php function print_age(int $age) { if ($age < 0) { trigger_error("Возраст не может быть отрицательныем числом.", E_USER_ERROR); } echo "Вам $age лет"; } print_age(-17);
Поскольку генерируется фатальная ошибка, то программа прервется, и инструкция
echo "Вам $age лет";
не будет выполнена. Текст сообщения об ошибке будет выведен в окно браузера в том случае, если в системе отслеживаются ошибки данного типа (типы отслеживаемых ошибок определяются значением директивы error_reporting конфигурационного файла php.ini):
Fatal error: Возраст не может быть отрицательныем числом. in /var/www/mysite/index.php on line 6
Запись сообщения в файл/отправка по почте (error_log()
)
Функция
int error_log(string $msg, int $type=0 [,string $destination] [, string $extra_headers])
также генерирует сообщение об ошибке, текст которого передается в параметр $msg
. Её дальнейшее поведение зависит от значения второго параметра:
$type == 0
(используется по умолчанию) — сообщение записывается в лог-файл, заданный директивойerror_log
.$type == 1
— сообщение отправляется по почте на адресс, указанный в параметре$destination
. Параметр$extra_headers
задает дополнительные почтовые заголовки.$type == 3
— сообщение добавляется в конец файла$destination
.
В результате выполнения следующего примера будет создан файл errors.txt, в который будет записано сообщение об ошибке. Если такой файл существует, сообщение будет дописано в конец файла. Программа при этом не прерывается.
Пример 2.
<?php function print_age(int $age) { if ($age < 0) { error_log("Возраст не может быть отрицательныем числом.", 1, "errors.txt"); } echo "Вам $age лет"; } print_age(-17);
- Log in to post comments
- 177 reads