Все ленты — последние статьи

Создаем единую страницу для обработки ошибок

В данном уроке представлено очень простое решение для обработки различных ошибок HTTP, таких как 404, 500 и так далее, в одном файле PHP. Нужно создать массив кодов ошибок и установить правила перенаправления на наш PHP файл. То есть, можно использовать одну страницу для обработки нескольких ошибок.


Перенаправление

В файле .htaccess вашего сервера нужно установить правила для обработки ошибок. В нашем случае мы будем перенаправлять все ошибки в наш файл errors.php, который будет формировать страницу HTML для посетителя. Добавляем в файл .htaccess следующие правила:
1 ErrorDocument 400 /errors.php
2 ErrorDocument 403 /errors.php
3 ErrorDocument 404 /errors.php
4 ErrorDocument 405 /errors.php
5 ErrorDocument 408 /errors.php
6 ErrorDocument 500 /errors.php
7 ErrorDocument 502 /errors.php
8 ErrorDocument 504 /errors.php

 


PHP

Теперь создаем файл errors.php, который должен располагаться в корневом каталоге вашего сервера (так как такое его местоположение установлено в заданных нами выше правилах в файле .htaccess).
01 $status = $_SERVER['REDIRECT_STATUS'];
02 $codes = array(
03 400 => array('400 Плохой запрос', 'Запрос не может быть обработан из-за синтаксической ошибки.'),
04 403 => array('403 Запрещено', 'Сервер отказывает в выполнении вашего запроса.'),
05 404 => array('404 Не найдено', 'Запрашиваемая страница не найдена на сервере.'),
06 405 => array('405 Метод не допускается', 'Указанный в запросе метод не допускается для заданного ресурса.'),
07 408 => array('408 Время ожидания истекло', 'Ваш браузер не отправил информацию на сервер за отведенное время.'),
08 500 => array('500 Внутренняя ошибка сервера', 'Запрос не может быть обработан из-за внутренней ошибки сервера.'),
09 502 => array('502 Плохой шлюз', 'Сервер получил неправильный ответ при попытке передачи запроса.'),
10 504 => array('504 Истекло время ожидания шлюза', 'Вышестоящий сервер не ответил за установленное время.'),
11 );
12
13 $title = $codes[$status][0];
14 $message = $codes[$status][1];
15 if ($title == false strlen($status) != 3) {
16 $message = 'Код ошибки HTTP не правильный.';
17 }
18
19 echo '<h1>Внимание! Обнаружена ошибка '.$title.'!</h1>
20 <p>'.$message.'</p>';


Готово!

Конечно, код PHP может формировать и более информативную страницу для пользователя. При формировании разметки стоит учесть рекомендации для страниц, выводящих информацию об ошибках.