Имитируем ошибки веб-сервера

В протоколе HTTP существует множество статусов, наиболее общеизвестные 200 (всё хорошо), 302 (редирект), 404 (не найдено), 500 (внутренняя ошибка сервера). Их выдает веб-сервер в зависимости от сложившейся ситуации.

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

Для этого используется функция PHP - header().
Нам нужно выдать 2 заголовка.

HTTP/1.0 xxx yyyyy

и

Status: xxx yyyyy

Где xxx - код статуса HTTP, yyyyy - описание статуса (в т.ч. ошибки).

Приведем пример для ошибки 404 (не найдено):

error404.php (пример работы)

<?php

header('HTTP/1.0 404 Not Found');
header('Status: 404 Not Found');
echo "<html>\n<head>\n<title>404 Not Found</title>\n</head>\n";
echo "<body><h1>Not Found</h1><p>The server has not found ";
echo "anything matching the Request-URI.</p></body></html>\n";
exit(0);

?>

А также, по просьбам трудящихся, ошибки 503 (сервис недоступен):

error503.php (пример работы)

<?php

header('HTTP/1.0 503 Service Unavailable');
header('Status: 503 Service Unavailable');
echo "<html>\n<head>\n<title>503 Service Unavailable</title>\n</head>\n";
echo "<body><h1>Service Unavailable</h1><p>The server is currently ";
echo "unable to handle the request due to a temporary overloading ";
echo "or maintenance of the server.</p></body></html>\n";
exit(0);

?>

· Добавьте на news2.ru

Похожие записи:


5 Комментариев »

  1. host said,

    Октябрь 18, 2006 @ 13:44

    Миш, :-X

  2. Dennion said,

    Октябрь 18, 2006 @ 14:03

    А я вот так и не допер зачем использовать Status, я обычно без него делаю и все работает, лоханулся я ? :)

  3. Mikhail said,

    Октябрь 18, 2006 @ 15:20

    Dennion: это чтобы работало при любых раскладах. Точную ссылку не дам, но по крайней мере раньше без Status не всегда работало, в зависимости от того, установлен PHP как CGI или как модуль.

  4. Dennion said,

    Октябрь 18, 2006 @ 20:39

    Учтемс, спасиб :)
    Я всегда знал чем дальше , тем проще.

  5. elliot said,

    Февраль 1, 2007 @ 04:14

    Хм… Интересная информация…

RSS feed for comments on this post · TrackBack URI.

Прокомментируйте