Ошибка 200 php

Время на прочтение
2 мин

Количество просмотров 47K

В этой трехминутной статье я хочу затронуть наболевшую тему.

Речь пойдет о статус коде HTTP 200 и ошибках в ответе.

HTTP/1.1 200 OK

{
  "error": {
    code: 2019,
    message: "Validation failed: field 'size' is invalid: the value is not a number"
  }
}

Нормально ли возвращать такой код, если возникла ошибка?

Нет? Да? Ну-ка давайте разберемся.

whaaat

Случай 1. HTTP 200 и batch операция

Допустим отправляется один запрос. Запрос выполняется успешно. Возвращаем код 200. Ответ не содержит информации об ошибке. С этим случаем всё предельно просто и понятно. А что делать если требуется выполнить batch операцию?

Например, мы работаем с сервером изображений. Предоставляемый API позволяет загрузить за один запрос сразу несколько файлов.

Запрос выглядит примерно так:

{
  "sources": [
    {"image": "http://myserver.com/image1.jpg"},
    {"image": "http://myserver.com/image2.jpg"},
    {"video": "http://myserver.com/video.jpg"}
  ]
}

Предположим, по какой-то причине (например, кончилось место на сервере) видео загрузить не удалось. Что бы вы вернули в таком случае? 2xx или 4xx или 5xx? Сервер, отвечает примерно вот так:

HTTP/1.1 200 OK

{
  "results": [
    { "status": "ok", "id": 312 },
    { "status": "ok", "id": 313 },
    { "status": "fail", "error": "NO SPACE" }
  ]
}

Некоторые сервисы (и вполне известные) действуют также. Отвечают 200. А в ответе возвращают список команд, которые выполнить не получилось.

Случай 2. HTTP 200 и ошибки в ответе

Пришёл запрос. Запрос зафейлился. Например, мы забыли указать какое-то поле. Или дату отправили не в миллисекундах, а как строку. Тут-то точно не надо возвращать 200! Но увы и нет.

Где-то на просторах интернета я встречал проекты на github и bitbucket, которые специально предназначены для таких вот случаев. В них просто вшиты возможные варианты и шаблоны. Можно их достаточно легко встроить в свой проект и как бы быть готовым к разного рода «падениям» запросов. Но есть одно но.

В такие моменты твой код становится уродливым. Ты ему говоришь:

— Cлушай, у нас тут есть один внешний API. Он в целом нормальный. Только надо внимательно смотреть что в ответе приходит. Если там ответ содержит поле «error», то значит запрос сломался.
— Но ведь для этого же есть 4xx и 5xx! Да кто вообще так делает?!
— Тише-тише. Не надо так громко. Он может услышать. Пожалуйста, будь добрее к нему. И просто смотри не только на статус код, но и на ответ, пожалуйста.
— Ладно…

HTTP 200 — это просто статус

Ну 200 и 200. Ну не запилили. Или не успели. Или вообще не будут. Ну и что?! Написал json парсер и всё!

Как бы да, но я хочу знать почему. Забыли? Забили? Не успели? Не знали?

Возможно я что-то упускаю. Или не знаю. Хочу ваше мнение. Срочно. Всем добра и выходных на выходных.

A work around to bug #50921: use auto_prepend_file to set the http response code to 500, then set it to 200 when you know the page has bootstrapped. A representative, but not comprehensive, example:

# php.ini
auto_prepend_file = /path/to/auto_prepend_file.php

# auto_prepend_file.php
<?php http_response_code(500);

# index.php
<?php
register_shutdown_function(function () {
    $error = error_get_last();
    switch ($error['type'] ?? 0) {
    case E_ERROR:                                                         
    case E_PARSE:                                                         
    case E_CORE_ERROR:                                                    
    case E_COMPILE_ERROR:                                                 
    case E_RECOVERABLE_ERROR:                                             
        file_put_contents('/path/to/log', $error['message'], FILE_APPEND);
        http_response_code(500);
        echo 'Something went horribly wrong.';
        echo str_repeat(' ', 512);
        break;
});

http_response_code(200);
require_once '/path/to/bootstrap.php';

If index.php has a crashing error in it, the 500 set via auto-prepend file will still execute. There won’t be any output unless display_error and/or display_startup_error are on, though. If bootstrap.php or any of its dependents have crashing error, then the shutdown function will handle those.

There are still scenarios here, which need to be considered:

  • What format should be output? Check ACCEPT header, or default accordingly.
  • What if output has already been started? How do you interrupt the stream to signal something went sideways?

A lot of this depends upon how much control you have over your environment (eg, write to INI_SYSTEM level config) and how your framework operates (eg ob_start, or no).

I’ll emphasize this is just a workaround. If your auto_prepend_file itself has parse errors, then you’re back to square one: PHP emits a 200 status error code. Fixing the engine to emit a 500 is the only proper way to break this chicken-and-egg cycle.

(PHP 5 >= 5.4.0, PHP 7, PHP 8)

http_response_codeGet or Set the HTTP response code

Description

http_response_code(int $response_code = 0): int|bool

Parameters

response_code

The optional response_code will set the response code.

Return Values

If response_code is provided, then the previous
status code will be returned. If response_code is not
provided, then the current status code will be returned. Both of these
values will default to a 200 status code if used in a web
server environment.

false will be returned if response_code is not
provided and it is not invoked in a web server environment (such as from a
CLI application). true will be returned if
response_code is provided and it is not invoked in a
web server environment (but only when no previous response status has been
set).

Examples

Example #1 Using http_response_code() in a web server environment


<?php// Get the current response code and set a new one
var_dump(http_response_code(404));// Get the new response code
var_dump(http_response_code());
?>

The above example will output:

Example #2 Using http_response_code() in a CLI environment


<?php// Get the current default response code
var_dump(http_response_code());// Set a response code
var_dump(http_response_code(201));// Get the new response code
var_dump(http_response_code());
?>

The above example will output:

bool(false)
bool(true)
int(201)

See Also

  • header() — Send a raw HTTP header
  • headers_list() — Returns a list of response headers sent (or ready to send)

craig at craigfrancis dot co dot uk

11 years ago


If your version of PHP does not include this function:

<?phpif (!function_exists('http_response_code')) {
        function
http_response_code($code = NULL) {

            if (

$code !== NULL) {

                switch (

$code) {
                    case
100: $text = 'Continue'; break;
                    case
101: $text = 'Switching Protocols'; break;
                    case
200: $text = 'OK'; break;
                    case
201: $text = 'Created'; break;
                    case
202: $text = 'Accepted'; break;
                    case
203: $text = 'Non-Authoritative Information'; break;
                    case
204: $text = 'No Content'; break;
                    case
205: $text = 'Reset Content'; break;
                    case
206: $text = 'Partial Content'; break;
                    case
300: $text = 'Multiple Choices'; break;
                    case
301: $text = 'Moved Permanently'; break;
                    case
302: $text = 'Moved Temporarily'; break;
                    case
303: $text = 'See Other'; break;
                    case
304: $text = 'Not Modified'; break;
                    case
305: $text = 'Use Proxy'; break;
                    case
400: $text = 'Bad Request'; break;
                    case
401: $text = 'Unauthorized'; break;
                    case
402: $text = 'Payment Required'; break;
                    case
403: $text = 'Forbidden'; break;
                    case
404: $text = 'Not Found'; break;
                    case
405: $text = 'Method Not Allowed'; break;
                    case
406: $text = 'Not Acceptable'; break;
                    case
407: $text = 'Proxy Authentication Required'; break;
                    case
408: $text = 'Request Time-out'; break;
                    case
409: $text = 'Conflict'; break;
                    case
410: $text = 'Gone'; break;
                    case
411: $text = 'Length Required'; break;
                    case
412: $text = 'Precondition Failed'; break;
                    case
413: $text = 'Request Entity Too Large'; break;
                    case
414: $text = 'Request-URI Too Large'; break;
                    case
415: $text = 'Unsupported Media Type'; break;
                    case
500: $text = 'Internal Server Error'; break;
                    case
501: $text = 'Not Implemented'; break;
                    case
502: $text = 'Bad Gateway'; break;
                    case
503: $text = 'Service Unavailable'; break;
                    case
504: $text = 'Gateway Time-out'; break;
                    case
505: $text = 'HTTP Version not supported'; break;
                    default:
                        exit(
'Unknown http status code "' . htmlentities($code) . '"');
                    break;
                }
$protocol = (isset($_SERVER['SERVER_PROTOCOL']) ? $_SERVER['SERVER_PROTOCOL'] : 'HTTP/1.0');header($protocol . ' ' . $code . ' ' . $text);$GLOBALS['http_response_code'] = $code;

            } else {

$code = (isset($GLOBALS['http_response_code']) ? $GLOBALS['http_response_code'] : 200);

            }

            return

$code;

        }
    }

?>

In this example I am using $GLOBALS, but you can use whatever storage mechanism you like... I don't think there is a way to return the current status code:

https://bugs.php.net/bug.php?id=52555

For reference the error codes I got from PHP's source code:

http://lxr.php.net/opengrok/xref/PHP_5_4/sapi/cgi/cgi_main.c#354

And how the current http header is sent, with the variables it uses:

http://lxr.php.net/opengrok/xref/PHP_5_4/main/SAPI.c#856


Stefan W

9 years ago


Note that you can NOT set arbitrary response codes with this function, only those that are known to PHP (or the SAPI PHP is running on).

The following codes currently work as expected (with PHP running as Apache module):
200 – 208, 226
300 – 305, 307, 308
400 – 417, 422 – 424, 426, 428 – 429, 431
500 – 508, 510 – 511

Codes 0, 100, 101, and 102 will be sent as "200 OK".

Everything else will result in "500 Internal Server Error".

If you want to send responses with a freestyle status line, you need to use the `header()` function:

<?php header("HTTP/1.0 418 I'm A Teapot"); ?>


Thomas A. P.

7 years ago


When setting the response code to non-standard ones like 420, Apache outputs 500 Internal Server Error.

This happens when using header(0,0,420) and http_response_code(420).
Use header('HTTP/1.1 420 Enhance Your Calm') instead.

Note that the response code in the string IS interpreted and used in the access log and output via http_response_code().


Anonymous

9 years ago


Status codes as an array:

<?php
$http_status_codes
= array(100 => "Continue", 101 => "Switching Protocols", 102 => "Processing", 200 => "OK", 201 => "Created", 202 => "Accepted", 203 => "Non-Authoritative Information", 204 => "No Content", 205 => "Reset Content", 206 => "Partial Content", 207 => "Multi-Status", 300 => "Multiple Choices", 301 => "Moved Permanently", 302 => "Found", 303 => "See Other", 304 => "Not Modified", 305 => "Use Proxy", 306 => "(Unused)", 307 => "Temporary Redirect", 308 => "Permanent Redirect", 400 => "Bad Request", 401 => "Unauthorized", 402 => "Payment Required", 403 => "Forbidden", 404 => "Not Found", 405 => "Method Not Allowed", 406 => "Not Acceptable", 407 => "Proxy Authentication Required", 408 => "Request Timeout", 409 => "Conflict", 410 => "Gone", 411 => "Length Required", 412 => "Precondition Failed", 413 => "Request Entity Too Large", 414 => "Request-URI Too Long", 415 => "Unsupported Media Type", 416 => "Requested Range Not Satisfiable", 417 => "Expectation Failed", 418 => "I'm a teapot", 419 => "Authentication Timeout", 420 => "Enhance Your Calm", 422 => "Unprocessable Entity", 423 => "Locked", 424 => "Failed Dependency", 424 => "Method Failure", 425 => "Unordered Collection", 426 => "Upgrade Required", 428 => "Precondition Required", 429 => "Too Many Requests", 431 => "Request Header Fields Too Large", 444 => "No Response", 449 => "Retry With", 450 => "Blocked by Windows Parental Controls", 451 => "Unavailable For Legal Reasons", 494 => "Request Header Too Large", 495 => "Cert Error", 496 => "No Cert", 497 => "HTTP to HTTPS", 499 => "Client Closed Request", 500 => "Internal Server Error", 501 => "Not Implemented", 502 => "Bad Gateway", 503 => "Service Unavailable", 504 => "Gateway Timeout", 505 => "HTTP Version Not Supported", 506 => "Variant Also Negotiates", 507 => "Insufficient Storage", 508 => "Loop Detected", 509 => "Bandwidth Limit Exceeded", 510 => "Not Extended", 511 => "Network Authentication Required", 598 => "Network read timeout error", 599 => "Network connect timeout error");
?>

Source: Wikipedia "List_of_HTTP_status_codes"


viaujoc at videotron dot ca

2 years ago


Do not mix the use of http_response_code() and manually setting  the response code header because the actual HTTP status code being returned by the web server may not end up as expected. http_response_code() does not work if the response code has previously been set using the header() function. Example:

<?php
header
('HTTP/1.1 401 Unauthorized');
http_response_code(403);
print(
http_response_code());
?>

The raw HTTP response will be (notice the actual status code on the first line does not match the printed http_response_code in the body):

HTTP/1.1 401 Unauthorized
Date: Tue, 24 Nov 2020 13:49:08 GMT
Server: Apache
Connection: Upgrade, Keep-Alive
Keep-Alive: timeout=5, max=100
Transfer-Encoding: chunked
Content-Type: text/html; charset=UTF-8

403

I only tested it on Apache. I am not sure if this behavior is specific to Apache or common to all PHP distributions.


Anonymous

9 years ago


You can also create a enum by extending the SplEnum class.
<?php/** HTTP status codes */
class HttpStatusCode extends SplEnum {
    const
__default = self::OK;

        const

SWITCHING_PROTOCOLS = 101;
    const
OK = 200;
    const
CREATED = 201;
    const
ACCEPTED = 202;
    const
NONAUTHORITATIVE_INFORMATION = 203;
    const
NO_CONTENT = 204;
    const
RESET_CONTENT = 205;
    const
PARTIAL_CONTENT = 206;
    const
MULTIPLE_CHOICES = 300;
    const
MOVED_PERMANENTLY = 301;
    const
MOVED_TEMPORARILY = 302;
    const
SEE_OTHER = 303;
    const
NOT_MODIFIED = 304;
    const
USE_PROXY = 305;
    const
BAD_REQUEST = 400;
    const
UNAUTHORIZED = 401;
    const
PAYMENT_REQUIRED = 402;
    const
FORBIDDEN = 403;
    const
NOT_FOUND = 404;
    const
METHOD_NOT_ALLOWED = 405;
    const
NOT_ACCEPTABLE = 406;
    const
PROXY_AUTHENTICATION_REQUIRED = 407;
    const
REQUEST_TIMEOUT = 408;
    const
CONFLICT = 408;
    const
GONE = 410;
    const
LENGTH_REQUIRED = 411;
    const
PRECONDITION_FAILED = 412;
    const
REQUEST_ENTITY_TOO_LARGE = 413;
    const
REQUESTURI_TOO_LARGE = 414;
    const
UNSUPPORTED_MEDIA_TYPE = 415;
    const
REQUESTED_RANGE_NOT_SATISFIABLE = 416;
    const
EXPECTATION_FAILED = 417;
    const
IM_A_TEAPOT = 418;
    const
INTERNAL_SERVER_ERROR = 500;
    const
NOT_IMPLEMENTED = 501;
    const
BAD_GATEWAY = 502;
    const
SERVICE_UNAVAILABLE = 503;
    const
GATEWAY_TIMEOUT = 504;
    const
HTTP_VERSION_NOT_SUPPORTED = 505;
}


Rob Zazueta

10 years ago


The note above from "Anonymous" is wrong. I'm running this behind the AWS Elastic Loadbalancer and trying the header(':'.$error_code...) method mentioned above is treated as invalid HTTP.

The documentation for the header() function has the right way to implement this if you're still on < php 5.4:

<?php
header
("HTTP/1.0 404 Not Found");
?>


Anonymous

10 years ago


If you don't have PHP 5.4 and want to change the returned status code, you can simply write:
<?php
header
(':', true, $statusCode);
?>

The ':' are mandatory, or it won't work

divinity76 at gmail dot com

3 years ago


if you need a response code not supported by http_response_code(), such as WebDAV / RFC4918's "HTTP 507 Insufficient Storage", try:

<?php
header
($_SERVER['SERVER_PROTOCOL'] . ' 507 Insufficient Storage');
?>
result: something like

HTTP/1.1 507 Insufficient Storage


Steven

8 years ago


http_response_code is basically a shorthand way of writing a http status header, with the added bonus that PHP will work out a suitable Reason Phrase to provide by matching your response code to one of the values in an enumeration it maintains within php-src/main/http_status_codes.h. Note that this means your response code must match a response code that PHP knows about. You can't create your own response codes using this method, however you can using the header method.

In summary - The differences between "http_response_code" and "header" for setting response codes:

1. Using http_response_code will cause PHP to match and apply a Reason Phrase from a list of Reason Phrases that are hard-coded into the PHP source code.

2. Because of point 1 above, if you use http_response_code you must set a code that PHP knows about. You can't set your own custom code, however you can set a custom code (and Reason Phrase) if you use the header method.


Richard F.

9 years ago


At least on my side with php-fpm and nginx this method does not change the text in the response, only the code.

<?php// HTTP/1.1 404 Not Found
http_response_code(404);?>

The resulting response is HTTP/1.1 404 OK


stephen at bobs-bits dot com

9 years ago


It's not mentioned explicitly, but the return value when SETTING, is the OLD status code.
e.g.
<?php

$a

= http_response_code();
$b = http_response_code(202);
$c = http_response_code();var_dump($a, $b, $c);// Result:
// int(200)
// int(200)
// int(202)
?>

Chandra Nakka

5 years ago


On PHP 5.3 version, If you want to set HTTP response code. You can try this type of below trick :)

<?php

header

('Temporary-Header: True', true, 404);
header_remove('Temporary-Header');?>


yefremov {dot} sasha () gmail {dot} com

8 years ago


@craig at craigfrancis dot co dot uk@ wrote the function that replaces the original. It is very usefull, but has a bug. The original http_response_code always returns the previous or current code, not the code you are setting now. Here is my fixed version. I also use $GLOBALS to store the current code, but trigger_error() instead of exit. So now, how the function will behave in the case of error lies on the error handler. Or you can change it back to exit().

if (!function_exists('http_response_code')) {
    function http_response_code($code = NULL) {    
        $prev_code = (isset($GLOBALS['http_response_code']) ? $GLOBALS['http_response_code'] : 200);

        if ($code === NULL) {
            return $prev_code;
        }

        switch ($code) {
            case 100: $text = 'Continue'; break;
            case 101: $text = 'Switching Protocols'; break;
            case 200: $text = 'OK'; break;
            case 201: $text = 'Created'; break;
            case 202: $text = 'Accepted'; break;
            case 203: $text = 'Non-Authoritative Information'; break;
            case 204: $text = 'No Content'; break;
            case 205: $text = 'Reset Content'; break;
            case 206: $text = 'Partial Content'; break;
            case 300: $text = 'Multiple Choices'; break;
            case 301: $text = 'Moved Permanently'; break;
            case 302: $text = 'Moved Temporarily'; break;
            case 303: $text = 'See Other'; break;
            case 304: $text = 'Not Modified'; break;
            case 305: $text = 'Use Proxy'; break;
            case 400: $text = 'Bad Request'; break;
            case 401: $text = 'Unauthorized'; break;
            case 402: $text = 'Payment Required'; break;
            case 403: $text = 'Forbidden'; break;
            case 404: $text = 'Not Found'; break;
            case 405: $text = 'Method Not Allowed'; break;
            case 406: $text = 'Not Acceptable'; break;
            case 407: $text = 'Proxy Authentication Required'; break;
            case 408: $text = 'Request Time-out'; break;
            case 409: $text = 'Conflict'; break;
            case 410: $text = 'Gone'; break;
            case 411: $text = 'Length Required'; break;
            case 412: $text = 'Precondition Failed'; break;
            case 413: $text = 'Request Entity Too Large'; break;
            case 414: $text = 'Request-URI Too Large'; break;
            case 415: $text = 'Unsupported Media Type'; break;
            case 500: $text = 'Internal Server Error'; break;
            case 501: $text = 'Not Implemented'; break;
            case 502: $text = 'Bad Gateway'; break;
            case 503: $text = 'Service Unavailable'; break;
            case 504: $text = 'Gateway Time-out'; break;
            case 505: $text = 'HTTP Version not supported'; break;
            default:
                trigger_error('Unknown http status code ' . $code, E_USER_ERROR); // exit('Unknown http status code "' . htmlentities($code) . '"');
                return $prev_code;
        }

        $protocol = (isset($_SERVER['SERVER_PROTOCOL']) ? $_SERVER['SERVER_PROTOCOL'] : 'HTTP/1.0');
        header($protocol . ' ' . $code . ' ' . $text);
        $GLOBALS['http_response_code'] = $code;

        // original function always returns the previous or current code
        return $prev_code;
    }
}


Anonymous

4 years ago


http_response_code() does not actually send HTTP headers, it only prepares the header list to be sent later on.
So you can call http_reponse_code() to set, get and reset the HTTP response code before it gets sent.

Test code:
<php
http_response_code(500);  // set the code
var_dump(headers_sent());  // check if headers are sent
http_response_code(200);  // avoid a default browser page


Kubo2

7 years ago


If you want to set a HTTP response code without the need of specifying a protocol version, you can actually do it without http_response_code():

<?php

header

('Status: 404', TRUE, 404);?>


zweibieren at yahoo dot com

8 years ago


The limited list given by Stefan W is out of date. I have just tested 301 and 302 and both work.

divinity76 at gmail dot com

6 years ago


warning, it does not check if headers are already sent (if it is, it won't *actually* change the code, but a subsequent call will imply that it did!!),

you might wanna do something like
function ehttp_response_code(int $response_code = NULL): int {
    if ($response_code === NULL) {
        return http_response_code();
    }
    if (headers_sent()) {
        throw new Exception('tried to change http response code after sending headers!');
    }
    return http_response_code($response_code);
}


Если сайт внезапно перестал работать, диагностировать и устранить проблему поможет этот небольшой чек-лист.

Вначале рассмотрим основные проблемы на стороне сервера.

Место на диске

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

Если есть доступ к серверу по SSH, то достаточно запустить команды:

df -i

df -h

Они покажут, сколько места занято на диске в процентах. Если занято 100%, то службы сервера, например, mysql, не смогут создавать временные файлы и сайты перестанут работать. В этом случае необходимо освободить место на диске, либо увеличить его. Более подробно в этой статье:

Что делать, когда осталось мало места на диске

Доступность служб

Как правило, для работы сайтов необходимо, чтобы был запущен веб-сервер и сервер БД mysql. Проверить статус служб можно через отдельный пункт ISPmanager:

Раздел «Службы» в ISPmanager

Если с какой-то из служб возникла проблема, то «лампочка» не включится, и тогда необходимо будет разбираться с этой службой отдельно. Так же, в большинстве случаев, об этом скажет главная страница сайта: либо отображается код ошибки, например, 500, 502, 504, либо непосредственно сам текст с отладочной информацией, если это позволяют настройки CMS, движка, на котором написан сайт.

Мы рассмотрели настройки со стороны сервера — если всё корректно по диагностике из предыдущих пунктов, но сайт по-прежнему не работает, то необходимо сужать круг поиска возможных причин ошибок и провести диагностику сайта.

Рассмотрим вариант дальнейших действий, если на сервере установлена панель управления ISPmanager.

Просмотр логов

Первым делом следует проверить:

  • не вносились ли изменения в код сайта,
  • не обновлялась ли CMS и плагины,
  • не была ли изменена версия PHP,
  • имеются ли резервные копии, на случай, если сайт не получится «реанимировать».

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

Сайты — нужный домен — изменить:

Настройка WWW-домена в ISPmanager

Выводимые сайтом ошибки можно посмотреть по пути

/var/www/http-logs/имя-сайта.error.log

например, запустив команду tail, подключившись к серверу по SSH:

Вывод логов сайта с помощью tail

Необходимо убедиться, что нужные параметры PHP для выявления ошибки, такие как:

error_reporting

display_errors

display_startup_errors 

log_errors 

включены.

Проверить это можно в том же ISPmanager во вкладке:

Настройки — Настройки PHPРасширенные настройки, выделив нужную версию. 

Настройки PHP в ISPmanager

Либо можно добавить их непосредственно в код сайта — в главную (индексную) страницу index.php:

ini_set('display_errors', 1);

ini_set('display_startup_errors', 1);

error_reporting(E_ALL);

Либо прописать в файл  .htaccess в корне сайта:

php_flag display_startup_errors on

php_flag display_errors on

Тем самым, мы включили возможность вывода ошибок и логирование со стороны PHP и в большинстве случаев сообщений в логе будет достаточно, чтобы понять, в какую сторону «копать». Но бывает, что и этого мало, тогда необходимо идти дальше и включать вывод диагностической информации уже непосредственно внутри самого сайта, средствами его движка.

Включение вывода ошибок и debug

Большинство CMS поддерживают вывод отладочной информации на экран, что поможет в диагностике ошибок.

Например, если WordPress не может соединиться с базой данных, он выведет такое сообщение:

Ошибка соединения с базой данных WordPress

Если же при этом в конфигурационном файле wp-config.php, который находится в корне сайта, включить дебаг — поменять директивы:

define('WP_DEBUG', false);

define('WP_DEBUG', true);

то выводимая информация будет полнее:

Подробный вывод ошибки соединения с БД

И в этом примере выводимый текст достаточно ясно даёт понять, что указан неправильный пароль пользователя базы данных.

Подобный способ отладки применим для большинства CMS: дебаг можно включить в configuration.php у Joomla, .settings.php(скрытый файл с точкой перед названием) у Битрикс и так далее. Узнать, как это сделать, может помочь документация используемого движка.

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

Совместимость версий PHP

Одна из частых проблем — сайт работает на одной версии PHP, а на сервере используется другая. Несовместимость версий приводит к некорректной работе сайта. Если дело в этом, вы увидите синтаксические ошибки вида:

Parse error: syntax error, unexpected T_STRING

Либо явное сообщение, как например это делает WordPress:

Неправильная версия PHP в WordPress

Другая распространенная ошибка:

Extension ‘mysql’ is deprecated since PHP 5.5 and removed since PHP 7.0; Use mysqli instead

Говорит о том, что вы пытаетесь запустить сайт на версии 7.0 и выше, когда он работает с более ранними версиями PHP и использует устаревшее расширение php-mysql, когда как в новых версиях используется только php-mysqli.

Отсутствие расширений PHP

Также могут отсутствовать необходимые для работы сайта расширения PHP. Пример текста ошибки:

Ioncube Loader is NOT installed at your server to run this application

или

Uncaught Error: Call to undefined function curl_init()

Это говорит об отсутствующих или выключенных расширениях PHP Ioncube или Curl соответственно.

Проверить их наличие можно через меню ISPmanager:

Настройки — Настройки PHPУправление расширениями

Расширения PHP в ISPmanager

Посмотреть текущую версию PHP можно через меню Сайты в строке с нужным сайтом:

Версии PHP в разделе «WWW-домены»

Либо подложить файл info.php c содержимым в корень сайта:

<?php

phpinfo();

?>

затем перейти по адресу в браузере http://вашсайт.рф/phpinfo.php — в верхней части страницы увидете, какая версия используется сайтом:

Вывод файла info.php

После работ важно удалить этот файл, так как этой информацией могут воспользоваться злоумышленники.

Лимиты PHP

Другой «пласт» возможных ошибок — недостаточные лимиты, выставленные в настройках  PHP. Это может проявляться как на главной странице, так и на других, где например, работает «тяжелый» скрипт, требующий больше времени и ресурсов, чем ему дозволено сейчас.

Об этом скажут сообщения:

PHP Fatal error: Allowed memory size of 8388608 bytes exhausted

В этом случае необходимо увеличить параметр на лимит используемой ОЗУ для одного скрипта  memory_limit.

The process *** exceeded the timeout of 60 seconds или PHP EXECUTION TIMEOUT ERROR

Увеличиваем время ( в секундах), поменяв параметры set_time_limit и max_execution_time.

The uploaded file exceeds the upload_max_filesize directive in php.ini

Правим директивы на размер загружаемых файлов в мегабайтах: upload_max_filesize и post_max_size.

Используем strace

Если способы, перечисленные выше, не помогли, можно попробовать использовать утилиту strace. Но будьте готовы к тому, что вам потребуется подключаться к серверу по SSH и потратить значительное время на поиск ошибок в логах — вывод этой команды не очень удобен для восприятия.

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

Устанавливается она yum install strace на серверах Centos или apt install strace для Debian/Ubuntu.

В общем виде подойдет такой синтаксис:

strace -s999 -o /tmp/strace.txt /opt/php71/php index.php

Где:

  • strace -s999— вызов команды strace с максимально подробным выводом и запись его в файл  /tmp/strace.txt
  • /opt/php71/php — адрес интерпретатора PHP
  • index.php — путь к вызываемому файлу.

По истории вызовов можно будет понять, к каким файлам идёт обращение и в какой момент возникает ошибка.

Заключение

В этой статье мы рассмотрели вероятные причины, почему может не работать сайт: из-за проблем «внутри» сервера — закончившихся ресурсов или неработающих служб. Разобрались, как включать логи, настраивать PHP и включать дебаг для выявления ошибок.

Если ничего не помогло, то рекомендуем не мучаться и не заниматься «самолечением» — обратитесь в техническую поддержку хостинга или к разработчику. Как правило, так получится решить проблему гораздо быстрее и без фатальных последствий.

Как правильно написать запрос в службу технической поддержки

Вы не вошли. Пожалуйста, войдите или зарегистрируйтесь.

Активные темы Темы без ответов

Страницы 1

Чтобы отправить ответ, вы должны войти или зарегистрироваться

1 2014-04-12 19:29:10 (изменено: Einshtein, 2014-04-12 20:06:24)

  • Einshtein
  • Редкий гость
  • Неактивен
  • Зарегистрирован: 2014-04-12
  • Сообщений: 4

Тема: Ошибка при обработке запроса, код 200

Добрый день, уважаемые форумчане!
Подскажите, пожалуйста, новичку: стоит у меня  phpmyadmin, отлично работал, пока в один прекрасный день, не стал выдавать такую ошибку:
Ошибка при обработке запроса
Код ошибки: 200
Текст ошибки: OK.
Никаких действий, кроме непосредственно запросов к 127.0.0.1 сделать не дает. При попытке открыть любую ссылку из меню или таблицу — то же самое.
Сама база данных работает, так как сайт, который ее использует, функционирует нормально, но очень не удобно без pma!(
Сервер: apache, установлен через XAMPP v3.2.1
Как с этим бороться?

2 Ответ от Hanut 2014-04-13 23:18:16

  • Hanut
  • Hanut
  • Модератор
  • На форуме
  • Откуда: Рига, Латвия
  • Зарегистрирован: 2006-07-02
  • Сообщений: 9,726

Re: Ошибка при обработке запроса, код 200

Код 200 означает, что запрос обработан успешно. Необходимо посмотреть журналы ошибок, чтобы проверить нет ли в них каких-нибудь записей.

3 Ответ от Einshtein 2014-04-14 18:57:28

  • Einshtein
  • Редкий гость
  • Неактивен
  • Зарегистрирован: 2014-04-12
  • Сообщений: 4

Re: Ошибка при обработке запроса, код 200

Hanut сказал:

Код 200 означает, что запрос обработан успешно. Необходимо посмотреть журналы ошибок, чтобы проверить нет ли в них каких-нибудь записей.

В журнале ошибок нет никаких записей о сбоях в работе pma.
Я обнаружил, что если, например, открыть ссылку на какую-либо таблицу в новой вкладке — то все ок.
Или если в новой вкладке открыть какое либо действие с таблицей — оно выполнится.
Т.е. просто неудобный глюк.

4 Ответ от Hanut 2014-04-15 08:42:08

  • Hanut
  • Hanut
  • Модератор
  • На форуме
  • Откуда: Рига, Латвия
  • Зарегистрирован: 2006-07-02
  • Сообщений: 9,726

Re: Ошибка при обработке запроса, код 200

Проверьте работу сессий. Каталог C:/php/tmp должен существовать.

session.save_path = "C:/php/tmp"

5 Ответ от Einshtein 2014-04-15 21:25:54

  • Einshtein
  • Редкий гость
  • Неактивен
  • Зарегистрирован: 2014-04-12
  • Сообщений: 4

Re: Ошибка при обработке запроса, код 200

Hanut сказал:

Проверьте работу сессий. Каталог C:/php/tmp должен существовать.

session.save_path = "C:/php/tmp"

Сессии работают нормально, каталог ( у меня другой путь) существует.
session.save_path=»D:/Programming/domains/shop/tmp»

6 Ответ от Hanut 2014-04-16 08:39:06

  • Hanut
  • Hanut
  • Модератор
  • На форуме
  • Откуда: Рига, Латвия
  • Зарегистрирован: 2006-07-02
  • Сообщений: 9,726

Re: Ошибка при обработке запроса, код 200

Без ошибок не смогу ничем помочь. С подобным поведением скрипта не сталкивался.

7 Ответ от Einshtein 2014-04-19 14:00:40

  • Einshtein
  • Редкий гость
  • Неактивен
  • Зарегистрирован: 2014-04-12
  • Сообщений: 4

Re: Ошибка при обработке запроса, код 200

Hanut сказал:

Без ошибок не смогу ничем помочь. С подобным поведением скрипта не сталкивался.

В любом случае спасибо за уделенное время!

8 Ответ от jonny0632 2019-07-26 22:24:41

  • jonny0632
  • Новичок
  • Неактивен
  • Зарегистрирован: 2019-07-26
  • Сообщений: 1

Re: Ошибка при обработке запроса, код 200

У меня такое бывает когда вместо https использую http. Не знаю в чем дело логи пустые

Сообщения 8

Страницы 1

Чтобы отправить ответ, вы должны войти или зарегистрироваться

Приветствую, мои уважаемые читатели. Рад видеть снова на страницах своего блога. Сегодня поговорим про сервера и различные ошибки связанные с работой. Рассмотрим основные коды и разберем что они означают.

Как проверить ответ сервера сайта. Ошибки 200, 301, 404, 302, 500, 503, 550

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

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

  • 2xx — успешно. Цель состоит в том, чтобы отправить посетителя на страницу с этим диапазоном.
  • 3xx — перенаправление. Помогает при организации редиректа с неактуальных документов, а также служит для склейки доменов.
  • 4xx — ошибка клиента. Клиент — это браузер, а диапазон означает, что запрошена отсутствующая или удаленная информация.
  • 5xx — ошибка сервера. Ответ требует вмешательства разработчиков.

Как самостоятельно проверить ответ сервера сайта

Доступны методы на любой вкус, подбираются в соответствии с текущей задачей. Например, вебмастеру код ответа чаще нужен для проверки видимости поисковыми роботами, кодеру — для обработки скриптов.

PHP

С версии 5.5 используется функция get_headers. Чтобы ее применить, нужно создать файл с расширением .php и дополнить следующим кодом:

<?php
$url = ‘http://www.site. ru’;
print_r(get_headers($url));
print_r(get_headers($url, 1));
?>

Код работает в рамках сервера, подойдет и локальный LAMP или Denver. В параметр $url вставляется нужный адрес. Запрос вернет массив заголовков, в начальной строке которых будет искомый параметр.

Как проверить ответ сервера сайта. Ошибки 200, 301, 404, 302, 500, 503, 550

Браузер

Проверить ответ сервера можно, используя встроенные инструменты разработчика. Например, в Chrome-инструментах это будет вкладка Network. При загрузке или перезагрузке в ней появится таблица с данными.

Как проверить ответ сервера сайта. Ошибки 200, 301, 404, 302, 500, 503, 550

Нужные параметры выделены желтым маркером.

Сервисы

Их множество, они доступны онлайн, в большинстве можно посмотреть данные без регистрации.

Как правило, владельцев сайтов интересует видимость конкретным роботом. В этом случае уместно разобрать пример с использованием «Яндекса». Проверка доступна в вебмастерской при условии подтвержденных прав на сайт.

Как проверить ответ сервера сайта. Ошибки 200, 301, 404, 302, 500, 503, 550

В поле URL вводится нужный адрес, выбирается робот и время.

Коды ошибок сервера: 200, 301, 404, 302, 500, 503, 550

200 — означает «Все отлично, я посылаю данные, которые вы просили». В зависимости от метода, начинка будет отличаться:

  • GET — соответствует запрошенному ресурсу;
  • HEAD — только поле заголовка;
  • POST — выведет результат произведенного действия;
  • TRACE — трассировка, которая содержит данные, полученные конечным сервером.

Ошибка 200 — неправильное утверждение, так как это число отдает корректно работающая страница.

301 — означает, что запрошенный ресурс навсегда перемещен (moved permanently), ему присвоен новый URI-адрес. Вариант применяется для коррекции пути посетителей, которые приходят по неправильной версии домена, например, набирают его с WWW. При включенном mod rewrite в htaccess дописывается:

RewriteEngine On
RewriteCond %{HTTP_HOST} ^www.(.*) [NC]
RewriteRule ^(.*)$ http://%1/$1 [R=301,L]

Обратная ситуация прописывается по аналогии. При использовании кода рекомендуется выполнить бэкап исходного файла, а после установки проверить ответ сервера.

При перемещении содержимого в пределах домена достаточно указать:

Redirect 301 /stariy adres http://site.ru/noviy adres

Заявленному статусу соответствует ошибка 301, когда старое местоположение по-прежнему актуально и сохранено для индексирования или при злоупотреблении редиректами.

Частый вопрос, возникающий при редиректе 301: что произойдет с индексацией и входящим ссылочным? Переиндексация займет от одного дня до пары месяцев, разумно ее ускорить своими силами. После завершения процесса ссылочное и его вес перейдут на новый адрес без потерь. Способ актуален при смене домена, если жаль терять наработанные пузомерки сайта, находящегося под фильтрами.

302 — означает, что страница временно отсутствует, потому что размещена под другим адресом. Ответ сервера 302 кэшируется, если указан Cache-Control или в случае просроченного поля заголовка.

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

Внимание! При выполнении GET–запроса с разрешенным доступом без изменения структуры документа, ответ 302 не подходит, сервером должна выдаваться ошибка 304.

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

500 — серверная ошибка, выполнить запрос невозможно. За исключением случаев, когда при ответе на запрос в HEAD включается объект, который содержит пояснение ошибочной ситуации. Ошибка 500 свидетельствует о столкновении с непредвиденным условием.

503 — невозможно обработать запрос. Это происходит, когда сервер перегружен, или в процессе обслуживания. Смысл в том, что это временное состояние. Если известно, сколько понадобится времени для исправления ситуации (длина задержки), в заголовке указывается параметр Retry-After. Буквальный перевод с английского — «попробуйте позже». Если Retry-After не указан, клиент обрабатывает ответ по аналогии с 500.

550 — относится не к HTTP, а к протоколу SMTP. Означает, что сервер SMTP не может доставить отправленное письмо пользователю, потому что его почтовый ящик не существует, либо клиент вошел неправильно, или учетная запись была отключена и заменена на новую. Среди SMTP-сообщений ошибка 550 считается наиболее распространенной. Дополняется информацией о том, что требуемое действие не выполнено: например, недоступен почтовый ящик, или содержит указания, относящиеся к спаму.

Любой код стоит воспринимать, как лаконичное информационное сообщение. Если вы — вебмастер, столкнувшийся с error 4XX или 5XX на своем ресурсе, не паникуйте. Внимательно прочтите дополнительное описание, если оно вывелось на экран. В случаях, когда описание отсутствует, рекомендуется просмотреть серверный error.log — там доступна подробная информация о причинах произошедшего.

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

С уважением, Галиулин Руслан.

Database errors are quite annoying especially in the middle of a database update.

One such problem is phpMyAdmin error code 200 when modifying the databases.

At Bobcares, we help server owners resolve these database errors as part of our Server Management Services.

Today, let’s discuss the main reasons for this error and how we fix them.

phpMyAdmin error code 200 – Where do you see this?

Customers usually get this error when they try to manage databases from the phpMyAdmin(PMA) panel. They see this error while creating a new table, modifying a large table, etc.

And, the complete error message looks like this.

Error in processing request
Error code: 200
Error text: OK

phpMyAdmin error code 200 – Reasons & Solutions

Usually, this error may disappear once the customer restart the MySQL service or the whole server. But, this is not permanent. The same error can occur again at any point of time.

So, let’s see how our Dedicated Engineers fix this issue permanently.

1)  Memory limit

One of the main reasons for this error is the memory limit set on the server. Some PHP apps such as phpMyAdmin require lot of memory to run. So, the default memory allocated on the server isn’t enough.

We’ve seen instances where customers see this error when they try to upload large tables via phpMyAdmin interface. For example, the plesk server shows below error in the server log.

14-Feb-2019 08:25:19] PHP Fatal error: Allowed memory size of 279212646 bytes exhausted (tried to allocate 401128 bytes) in /opt/psa/admin/htdocs/domains/databases/phpMyAdmin/libraries/xxxxx on line xxxx
How we fix?

In such cases, our Support Engineers increase the memory_limit on the server so that the phpMyAdmin can function.

For example, we add the following code in php.ini file to increase the memory_limit to 512 MB.

memory_limit = 512M

In addition to that, we ensure that max_input_vars parameter is also set to an optimum value. Similarly, on Plesk servers, we modify the memory_limit value in Plesk PHP configuration file /usr/local/psa/admin/conf/php.ini and restart the plesk service.

In some cases, we can specifically increase the PHP settings exclusively for phpMyAdmin. For example, on WAMP’s phpMyAdmin, we allocate more memory to phpMyAdmin from wampaliasphpmyadmin.conf.

php_admin_value memory_limit 512M

Be careful while setting the PHP memory limit on the server. Higher memory limits on the server gives a favorable environment for the attackers. We’ve seen customers setting memory_limit to -1 in php.ini. This sets memory limit to infinity which is a high security risk. So, our Server Experts always ensure that the PHP parameters on the server are set to optimum values.

2) Issues with language files

This problem can happen at times. We’ve seen instances where customer report this error when they try to view the table structure from phpMyAdmin panel.

Error in Processing Request Error code: 200 Error text: OK

This is actually a bug in the language files of phpMyAdmin. We’ve seen instances where customers see this error when they use other languages like Italian, French other than English.

How we fix?

In such cases, our Support Engineers change the language of the phpMyAdmin interface. We usually change the phpMyAdmin language my modifying the below parameter in config.inc.php file.

$cfg['Lang'] = '';

Alternatively, we can change the language from phpMyAdmin interface using the below steps.

  • Click on the Server name.
  • Go to Appearance settings.
  • Change the language from drop down box.

phpmyadmin error code 200

How change language in phpMyAdmin?

Last but not the least, multiple sessions of phpMyAdmin running under the same user can also create this error. In such cases, our Support Experts request the customers to kill all the sessions of phpMyAdmin panel with the user and access it once again.

[Need a database expert to fix the error with your phpMyAdmin panel? We can help you here.]

Conclusion

In short, phpMyAdmin error code 200 usually occurs when customers try to modify the database from phpMyAdmin panel. This can be due to memory limits on the server, multiple sessions of the same user, etc. Today, we’ve discussed the main reasons for this error and how our Dedicated Engineers fix them.

PREVENT YOUR SERVER FROM CRASHING!

Never again lose customers to poor server speed! Let us help you.

Our server experts will monitor & maintain your server 24/7 so that it remains lightning fast and secure.

GET STARTED

var google_conversion_label = «owonCMyG5nEQ0aD71QM»;

Может сейчас эта тема не особо вас волнует, однако протяжении существования вашего сайта вы будете сталкиваться с кодами ответов сервера или «списком кодов состояния HTTP», связанных с различными элементами функциональной составляющей вашего сайта. Довольно часто встречаются такие ошибки, как 404 и 301, но существует огромное множество других ошибок, с которыми вы, возможно, не знакомы. Прежде чем паниковать, лучше прочтите эту статью, призванную рассказать вам о значения кодов различных ошибок, которые могут встретиться на вашем пути.

Некоторые из них напрямую связаны с сервером или с клиентской стороной, а некоторые уже не актуальны, поэтому вы вряд ли их увидите в реальной жизни, но ради интереса и фоновых знаний я включил и их.

Ниже представлена удобная таблица, при помощи которой вы сможете быстро и просто перейти к интересующей вас ошибке, и узнать ее значение:

100 301 405 417 450
101 302 406 418 451
102 303 407 422 500
200 304 408 423 501
201 305 409 424 502
202 306 410 425 503
203 307 411 426 504
204 400 412 428 505
205 401 413 429 506
206 402 414 431 507
207 403 415 444 509
300 404 416 449 510

1xx Информационные коды

  • 100 Continue Server Code

100 Continue означает «работу в штатном режиме». Он означает, что пользователем был сделан хороший запрос, и сервер принялся к обработке. Это временный код ответа, имеющий место лишь тогда, когда пользователь ожидает финального ответа от сервера, который происходит только после того, как будет отослан последний пакет данных.

Когда этот код может использоваться? Это внутренний код, и иногда он даже не генерируется, если пользователь уже получил какие-то данные от сервера. Это нечто вроде послания к серверу о том, что соединение было установлено успешно, и двери открыты. Высылай данные, но не забудь закрыть дверь, когда закончишь дела (имеется в виду код финального ответа).
Вернуться в начало

  • 101 Switching Protocols

Это, наверное, один из самых простых серверных кодов, который означает, что пользователь сделал запрос на переключение типа протокола, используемого на веб-сервере, и сервер дал согласие на это.

Когда этот код может использоваться? При переключении на новую версию HTTP с протокола старого типа. Этот запрос выполняется только при наличии более подходящего протокола (иными словами, при наличии более свежей версии HTTP).
Вернуться в начало

  • 102 Processing

Так как WebDAV-запрос (протокол передачи) может содержать не только один запрос, но также множество подзапросов, включая операции с файлами, он зачастую может затребовать более длительного времени для завершения запроса.

Когда этот код может использоваться? Этот код генерируется для того, чтобы оповестить пользователя и необходимости сбросить таймер и ожидать следующей команды в обычном режиме, так как процесс обработки запроса может занять длительное время.
Вернуться в начало

2xx Success

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

  • 200 OK

Этот код, вероятно, является самым популярным, но при этом самым незаметным ввиду его характера. Он означает, что обмен между пользователем и сервером завершен, и все прошло так, как должно было.

  • 201 Created

В результате успешного выполнения запроса был создан новый ресурс. Например, запрос пользователя привел к созданию нового ресурса вроде новой страницы. Сервер-источник должен создать ресурс перед тем, как отправлять код 201. Если ресурс не может быть создан в данный момент, то сервер вместо этого должен отобразить код 202 (accepted).
Вернуться в начало

  • 202 Accepted

Запрос был принят на обработку, но она не завершена по каким-либо причинам. Запрос может и не быть выполнен до конца, в зависимости от того, был ли он отклонен в процессе обработки.

Когда этот код может использоваться? Когда сервер не может выполнить запрос в тот момент, в который он был сделан. Запрос изначально не рассчитан на обязательное исполнение, и клиенту не обязательно дожидаться окончательной передачи сообщения, так как может быть начат очень долгий процесс.
Вернуться в начало

  • 203 Non-Authoritative Information

Сервер успешно обработал запрос, но передаваемая информация была взята не из первичного источника (резервной копии, другого сервера и т. д.) и поэтому может быть неактуальной. По сути, этот код очень похож на 200, но указывает на то, что информация была получена не из первоисточника.

Когда этот код может использоваться? Этот код может быть использован вместо 200, когда у отправителя есть причина полагать, что заголовки ответа от постороннего источника могут отличаться от того, что предоставил бы исходный сервер.
Вернуться в начало

  • 204 No Content

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

Когда этот код может использоваться? Этот код, главным образом, используется для того, чтобы позволить осуществить ввод или какие-либо действия без необходимости обновлять документ (страницу).
Вернуться в начало

  • 205 Reset Content

Сервер успешно обработал запрос, но при этом не возвращает какой-либо контент. В отличие от 204, этот ответ требует от запрашиваемого обновить документ.

Когда этот код может использоваться? Обычно он используется тогда, когда пользователь заполняет форму, а сервер посылает браузеры запрос на очистку формы. Он схож с кодом 204, но просит пользователя сбросить документ после завершения – например, очистить HTML-форму после подтверждения.
Вернуться в начало

  • 206 Partial Reset

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

Когда этот код может использоваться? Этот кода обычно используется вследствие запрос If-Range, который применяется в мощных валидаторах кэша. Запрос также должен включать заголовки области, которые используется в качестве параметров диапазона возвратной информации.
Вернуться в начало

  • 207 Multi-Status

Сервер передаёт результаты выполнения сразу нескольких независимых операций, которые помещают в тело сообщения в виде XML-документа.
Вернуться в начало

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

Этот класс кодов состояния указывает на дальнейшие действия, которые должны быть предприняты агентом пользователя для того, чтобы завершить запрос. Действия могут производиться пользователей, либо могут включать в себя различные запросы к серверу.

  • 300 Multiple Choices

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

Когда этот код может использоваться? Обычно этот код можно увидеть, когда сервер считает, что предоставленный пользователем (другими словами, браузером пользователя) URL имеет недостаточно точный указатель, и предлагает дальнейший выбор. Обычно это происходит тогда, когда пользователь использует URL на директорию не самого последнего уровня, и сервер предлагает ему выбор имеющихся файлов или директорий последующего уровня.
Вернуться в начало

  • 301 Moved Permanently

Это довольно распространенный пользовательский запрос. Он означает, что запросы для данного ресурса (а также все последующие запросы) должны быть перенаправлены на заданный URL.

Когда этот код может использоваться? Когда страница более не существует, либо ссылка, ведущая на сторонний источник, уже не работает. 301 редирект сообщает пользователю о том, что запрашиваемый ресурс был перемещен (обычно это реализуется при помощи файла .htaccess, доступного на серверах Apache).
Вернуться в начало

  • 302 Found

Этот код сообщает пользователю, что расположение запрашиваемого ресурса временно изменено, и 302 код состояния должен содержать информацию о новом месторасположении, которое пользователь и должен запросить.

Когда этот код может использоваться? У этого кода есть несколько применений, многие из которых не являются тем, для чего код был изначально предназначен. Изначально он представлял собой основной способ создания временного перенаправления. Тем не менее, сегодня существуют и другие – этичные, и неэтичные – способы его применения.
Вернуться в начало

  • 303 See Other

Этот код указывает пользователю на то, что запрашиваемый ресурс можно найти по URL, который отличается от указанного в запросе. Это не обязательно означает, что что-то было перемещено, это код лишь предоставляет адрес, по которому следует запрашивать подобный ответ.

Когда этот код может использоваться? Этот метод главным образом существует для того, чтобы позволить выводу данных POST-активированного скрипта перенаправить агента пользователя к выбранному ресурсу.
Вернуться в начало

  • 304 Not Modified

Этот код означает, что пользователь запрашивает документ/ресурс только в том случае, если он подвергался изменениям с момента последнего обновления кэша данного документа.

Когда этот код может использоваться? Если в ответе от сервера сообщается о том, что параметры документа If-Modified-Since или If-Match не менялись с момента создания последнего кэша, то нет необходимости в повторной отправке ресурса.
Вернуться в начало

  • 305 Use Proxy

Этот код сообщает пользователю, что доступ к запрашиваемому ресурсу возможен только посредством прокси, указанного в ответе.

Когда этот код может использоваться? Этот код часто отображается в связи с мерами безопасности, и предоставляет доступ к запрашиваемым URL-ресурсам.
Вернуться в начало

  • 306 Switch Proxy

Этот код изначально означал «последующие запросы должны использовать указанный прокси», но в данный момент не используется и зарезервирован.
Вернуться в начало

  • 307 Temporary Redirect

Этот код возвращается, если ресурс на данный момент временно доступен по другому URL, который также предоставляется в ответе. Этот код немного отличается от кода 302 – он представляет собой более определенную версию кода 302.

Когда этот код может использоваться? Он используется практически в тех же случаях, что и 302, но пользователь должен продолжить запросы по исходному URL при следующих запросах, либо до тех пор, пока не будет применен новых код ответа.
Вернуться в начало

4хх Ошибка клиента

Класс кодов 4xx предназначен для указания ошибок со стороны клиента, либо на то, что локации никогда (или уже) не существовало. Эти коды состояния применимы к любому методу запроса.

  • 400 Bad Request

Запрос не может быть исполнен ввиду синтаксической ошибки.

Когда этот код может использоваться? Когда пользователь запрашивает информацию, но делает это, пренебрегая правилами протокола передачи гипертекста. Запрос не следует повторять без изменения синтаксиса.
Вернуться в начало

  • 401 Unauthorized

Этот код связан с запросом к ресурсу, который требует авторизации. Ответ 401 указывает на то, что попытка авторизации была отклонена по тем данным, которые предоставил пользователь.

Когда этот код может использоваться? Когда пользователь совершает запрос к серверу, используя неправильные данные авторизации (имя пользователя и/или пароль).
Вернуться в начало

  • 402 Payment Required

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

Когда этот код может использоваться? Старый сервис MobileMe от Apple выдавал ошибку 402, если аккаунт пользователя в MobileMe подозревался в злоупотреблении сервисом. Кроме того, Youtube использует это состояние, если конкретный IP-адрес уличен в совершении чрезмерного числа запросов, и тогда пользователю необходимо ввести CAPTHA.
Вернуться в начало

  • 403 Forbidden

Пользователь пытается осуществить доступ к ресурсу, к которому у него нет доступа, и авторизация не изменит положения.

Когда этот код может использоваться? Когда сервер понял запрос, но он отказывается его выполнять из-за ограничений в доступе для клиента к указанному ресурсу. Обычно такое случается, когда ресурс не предназначен для публичного доступа.
Вернуться в начало

  • 404 Not Found

Все знакомы с этим кодом, не так ли? Он означает, что запрошенный ресурс не может быть найден, но в будущем – когда он, возможно, там появится, – к нему можно будет осуществить доступ. Также здесь допустимы последующие запросы от клиента. Тем не менее, в большинстве таких случаев применяется код перенаправления из семейства 3хх, и пользователя перенаправляют на альтернативный ресурс или локацию.

Когда этот код может использоваться? Довольно часто, особенно если страницу переместили или удалили. Зачастую в подобных случаях сервер автоматически генерирует направляющую страницу с ошибкой 404.
Вернуться в начало

  • 405 Method Not Allowed

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

Когда этот код может использоваться? Ошибки 405 встречаются в связи с конкретными объектами на веб-странице, для которых был совершен запрос. Например, когда строка запроса в скрипте отличается от пользовательского запроса, в котором подразумевается использование этого скрипта.
Вернуться в начало

  • 406 Not Acceptable

Запрошенный ресурс способен генерировать только тот контент, который не применим к Accept-заголовкам в самом запросе. Браузер способен указывать серверу характеристики данных, которые данные будут принимать от сервера

Когда этот код может использоваться? Если форма файла запрошенного ресурса не совпадает с форматом, который пользователь способен распознать. Мы говорим сейчас о языке программирования, а не о французском!
Вернуться в начало

  • 407 Proxy Authentication Required

Как и код состояния 401, код 407 означает, что клиент сначала должен авторизоваться через прокси. Чтобы сделать это и авторизоваться, прокси должен вернуть поле с заголовком proxy-authenticate, который отвечает требованиям, представленным сервером.

Когда этот код может использоваться? Когда сервер думает, что запрос данных от клиента корректным, но доступ к ресурсу возможен только посредством авторизации через прокси-сервер.
Вернуться в начало

  • 408 Request Timeout

Время ожидания сервером передачи от клиента истекло.

Когда этот код может использоваться? Руководствуясь спецификацией W3 HTTP: «Клиент не сделал запрос в отведенный промежуток времени, который сервер был готов ждать. Клиент МОЖЕТ повторить запрос когда угодно».
Вернуться в начало

  • 409 Conflict

Указывает на то, что запрос не может быть выполнен из-за конфликтного обращения к ресурсу.

Когда этот код может использоваться? Вы можете получить такой код при загрузке файла на веб-сервер, где уже имеется более свежая версия этого файла, что приводит к конфликту в системе контроля версий.
Вернуться в начало

  • 410 Gone

Такой ответ сервер посылает, если ресурс раньше был по указанному URL, но был удалён и теперь недоступен. Пользователю не следует повторять идентичный запрос.

Когда этот код может использоваться? Если более невозможно осуществить доступ к ресурсу посредством данного запроса, и сервер не владеет информацией о возможном месте расположения ресурса. Если у сервера есть подозрение, что документ в ближайшее время может быть восстановлен, то лучше клиенту передать код 404.
Вернуться в начало

  • 411 Length Required

Запрос не указывает длину контента, и это было затребовано в совершенном запросе.

Когда этот код может использоваться? Когда браузер не определяет длину запрашиваемого контента в заголовке запроса. Сервер не примет запрос без валидного поля заголовка content-length.
Вернуться в начало

  • 412 Precondition Failed

Сервер не отвечает одному из предварительных условий, которые отправитель указал в запросе. Другими словами, один или более заголовок запроса был возвращен с атрибутом false.

Когда этот код может использоваться? Если заголовок запроса, который совершает валидный запрос к ресурсу, сообщает, что этот конкретный запрос не применим к этому конкретному ресурсу.
Вернуться в начало

  • 413 Request Entity Too Large

Код 413 отображается в тех случаях, когда сервер отказывается обработать запрос по причине слишком большого размера тела запроса.

Когда этот код может использоваться? При использовании в форме метода POST с контентом, по размеру большим, нежели сервер способен обработать.
Вернуться в начало

  • 414 Request-URL Too Long

Этот код отображается, когда сервер не может обработать запрос из-за слишком длинного указанного URL.

Когда этот код может использоваться? Когда POST-запрос конвертируется в GET-запрос. POST-запрос поддерживает отправку безграничного объема данных, связывая их с самим запросом. Тем не менее, если запрос должен быть конвертирован в GET-запрос, то запрос позволяет привязать данные формы к URL, что позволяет проводить информацию в больших размерах, чем это было доступно.
Вернуться в начало

  • 415 Unsupported Media-Type

Ответ 415 отправляется для указания о том, что сервер заметил, что часть запроса была сделана в неподдерживаемом формате.

Когда этот код может использоваться? Когда в запросе не указываются какие-либо типы медиа, которые поддерживаются ресурсом или сервером. Например, пользователь запрашивает изображение с расширением файла, которое не поддерживается сервером. Сервер знает о том, что было запрошено, но не понимает формат, в котором был запрошен ресурс.
Вернуться в начало

  • 416 Requested Range Not Satisfiable

Этот ответ приходит пользователю, когда тот запрашивает часть запрашиваемого ресурса, когда эта часть не может быть предоставлена.

Когда этот код может использоваться? Когда у сервера запрашивают XXX-YYY байтов какого-либо ресурса, но ресурс имеет меньший размер, чем указано в запросе.
Вернуться в начало

  • 417 Expectation Failed

Этот ответ может быть получен, когда по каким-то причинам сервер не может удовлетворить значению поля Expect заголовка запроса.

Когда этот код может использоваться? Все вполне и так понятно. Когда один из заголовков запроса, заголовок «Expect», имеет запрос, на который сервер не может предоставить ответ.
Вернуться в начало

  • 418 I’m a teapot

Этот код был создан в 1998 году как одна из традиционных первоапрельских шуток IETF, в RFC 2324, Hyper Text Coffee Pot Control Protocol, и вряд ли будет обрабатываться современными HTTP-серверами.

  • 422 Unprocessable Entity

Запрос был принят и понят, но не может быть выполнен ввиду наличия семантических ошибок.

Когда этот код может использоваться? Когда сервер успешно принял запрос, может работать с указанным видом данных, в теле запроса XML-документ имеет верный синтаксис, но имеется какая-то логическая ошибка, из-за которой невозможно произвести операцию над ресурсом.
Вернуться в начало

  • 423 Locked

Целевой ресурс из запроса заблокирован от применения к нему указанного метода. Чтобы ресурс стал доступным, необходимо снять блокировку или предоставить правильные данные авторизации.

Когда этот код может использоваться? Когда ресурс… закрыт. Обычно это случается из соображений безопасности.
Вернуться в начало

  • 424 Failed Dependency

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

  • 425 Unordered Collection

Этот код отображается, когда ресурс определен в черновиках «WebDAV Advanced Collections Protocol», но не присутствует в «Web Distributed Authoring and Versioning Ordered Collections Protocol».
Вернуться в начало

  • 426 Upgrade Required

Этот код отображается, когда сервер указывает клиенту на необходимость обновить (переключиться на другой, более новый) протокол. Когда этот код может использоваться? Обычно когда браузер использует устаревшие протоколы.
Вернуться в начало

  • 428 Precondition Required

Сервер-источник требует, чтобы в запросе были указаны предварительные условия. Этот код предназначен для того, чтобы избежать конфликта версий ресурса в тех случаях, когда клиент получает (GET) состояние ресурса, изменяет его, и отправляет (PUT) обратно на сервер, и в то же время какая-то третья сторона также изменяет положение ресурса прямо на севере, что приводит к конфликту.

Когда этот код может использоваться? Запрашивая указание условий, сервер как бы гарантирует клиентам то, что они используют корректные актуальные копии ресурс. Если же это не соответствует действительно, пользователь получит ошибку 428.
Вернуться в начало

  • 429 Too Many Requests

Этот ответ посылается, если клиент попытался отправить слишком много запросов за короткое время.

Когда этот код может использоваться? Когда пользователь посылает слишком много запросов за короткий промежуток времени.
Вернуться в начало

  • 431 Request Header Fields Too Large

Происходит, когда сервер не собирается обрабатывать запрос, так как какое-то из полей заголовка (или все поля заголовков) слишком большое.

Когда этот код может использоваться? В основном тогда, когда заголовок запроса от пользователя больше, чем сервер способен обработать. Запрос может быть повторен после того, как будет уменьшен размер полей заголовков в запросе.
Вернуться в начало

  • 444 No Response

Использовался в лог-файлах Nginx для указания того, что сервер не вернул информацию пользователю и закрыл соединение.

Когда этот код может использоваться? Обычно использовался в качестве сдерживающего фактора против вредоносного ПО.
Вернуться в начало

  • 449 Retry With (Microsoft)

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

Когда этот код может использоваться? Этот код зачастую генерируется, когда выставленные параметры запроса не соответствуют тем, что может принять сервер.
Вернуться в начало

  • 450 Blocked by Windows Parental Controls (Microsoft)

Расширение Microsoft. Эта ошибка выдается, когда параметры Windows Parental Controls выставлены на блокировку доступ к определенным веб-страницам.

Когда этот код может использоваться? Когда родители (зная об этой функции) используют родительский контроль, и id-доступа запросил доступ к заблокированному ресурсу.
Вернуться в начало

  • 451 Unavailable For Legal Reasons

Новый HTTP-код состояния для ресурсов, которые заблокированы из юридических соображений. Используется для указания на то, что доступ к запрашиваемому ресурсу был заблокирован из юридических соображений: например, цензурой, или правительством.
Вернуться в начало

5xx Ошибка сервера

Коды 5xx выделены под случаи неудачного выполнения операции по вине сервера.

Эти серверные ответы зачастую отображаются, когда пользователь делает запрос, который сервер не в состоянии обработать по той или иной причине. Сервер должен включать сообщение для браузера, которое должно быть показано пользователю – в нем сообщается, что сервер (и по каким причинам) не способен обработать запрос.

  • 500 Internal Server Error

Данная ошибка говорит о любой внутренней ошибке сервера, которая не входит в рамки остальных ошибок класса.

Когда этот код может использоваться? Когда ресурс или ссылка создаются на сервере (вроде календаря в системе бронирования), которые технически не существуют в виде ссылки или доступного ресурса, но показывается пользователю в виде ссылки.
Вернуться в начало

  • 501 Not Implemented

Сервер либо не понимает метод в запросе, либо не поддерживает возможностей, необходимых для обработки запроса

Когда этот код может использоваться? Вы можете столкнуться с этим, когда сервер не поддерживает нормальные протоколы запроса, вроде GET, OPTIONS, HEAD, POST и т.д.
Вернуться в начало

  • 502 Bad Gateway

Ответ 502 отображается, когда сервер, выступая в роли шлюза или прокси-сервера, получил недействительное ответное сообщение от вышестоящего сервера.

Когда этот код может использоваться? Обычно, когда вышестоящий сервер и прокси-сервер/шлюз не согласовывают между собой протоколы, представленные в запросе, и в результате получается ошибка при обмене данных.
Вернуться в начало

  • 503 Server Unavailable

Сервер временно не имеет возможности обрабатывать запросы по техническим причинам. В основном, это состоянии является временным.

Когда этот код может использоваться? Когда сайт пользуется чрезмерным спросом, и сервер не в состоянии обработать все запросы.
Вернуться в начало

  • 504 Gateway Timeout

Сервер в роли шлюза или прокси-сервера не дождался ответа от вышестоящего сервера для завершения текущего запроса.

Когда этот код может использоваться? Когда для передачи данных используется прокси-сервер/шлюз, и два сервера ждут ответов.
Вернуться в начало

  • 505 HTTP Version Not Supported

Сервер не поддерживает указанную в запросе версию протокола HTTP.

Когда этот код может использоваться? В случаях, описанных выше! Когда HTTP-протокол более старый, нежели требуется серверу, и следовательно не поддерживается.
Вернуться в начало

  • 506 Variant Also Negotiates

Такой ответ посылается, когда в результате ошибочной конфигурации выбранный вариант указывает сам на себя, из-за чего процесс связывания прерывается.

Когда этот код может использоваться? Когда сервер настроен некорректно, и не способен обработать запрос.
Вернуться в начало

  • 507 Insufficient Storage

Когда сервер не способен разместить данные, так как не хватает места для выполнения текущего запроса.

Когда этот код может использоваться? Когда сервер уже полностью загружен, и пользователь совершает запрос на ресурс, который сервер уже имеет в запасе. Проблема заключается в том, что на сервере нет места для того, чтобы поместить данные, которые посылаются в запросе, чтобы затем выслать запрашиваемый ресурс.
Вернуться в начало

  • 509 Bandwidth Limit Exceeded

Этот код ответа используется при превышении веб-площадкой отведённого ей ограничения на потребление трафика.

Когда этот код может использоваться? Когда на сервере Apache выполняется корректное расширение, и в ISP установлен уровень пропускного канала, который скоро может быть превышен. Существует несколько опций предела.
Вернуться в начало

  • 510 Not Extended

Когда на сервере отсутствует расширение, которое желает использовать клиент. Когда этот код может использоваться? Когда сервер требует больше информации в совершаемом запросе.
Вернуться в начало

  • 511 Network Authentication Required

Данный код состояния отображается в случае, если клиент должен сначала авторизоваться в сети, например, ввести пароль для платной точки доступа к Интернету.

Когда этот код может использоваться? Когда пользователь предварительно должен дать свое согласие на условия использования, перед тем, как он получит доступ к интернету (например, к Wi-fi точке доступа).

Итак, надеюсь, что данный список хоть как-то окажется вам полезным. Если я упустил что-то из виду,  пожалуйста, допишите информацию в комментариях, и я обязательно включу ее в статью. Пожалуйста, не забудьте поделиться этой статье с друзьями, чтобы они также были в курсе.
Вернуться в начало

Приветствую, мои уважаемые читатели. Рад видеть снова на страницах своего блога. Сегодня поговорим про сервера и различные ошибки связанные с работой. Рассмотрим основные коды и разберем что они означают.

Как проверить ответ сервера сайта. Ошибки 200, 301, 404, 302, 500, 503, 550

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

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

Как самостоятельно проверить ответ сервера сайта

Доступны методы на любой вкус, подбираются в соответствии с текущей задачей. Например, вебмастеру код ответа чаще нужен для проверки видимости поисковыми роботами, кодеру — для обработки скриптов.

<?php
$url = ‘https://www. site. ru’;
print_r(get_headers($url));
print_r(get_headers($url, 1));
?>

Как проверить ответ сервера сайта. Ошибки 200, 301, 404, 302, 500, 503, 550

Браузер

Проверить ответ сервера можно, используя встроенные инструменты разработчика. Например, в Chrome-инструментах это будет вкладка Network. При загрузке или перезагрузке в ней появится таблица с данными.

Как проверить ответ сервера сайта. Ошибки 200, 301, 404, 302, 500, 503, 550

Нужные параметры выделены желтым маркером.

Сервисы

Их множество, они доступны онлайн, в большинстве можно посмотреть данные без регистрации.

Как правило, владельцев сайтов интересует видимость конкретным роботом. В этом случае уместно разобрать пример с использованием «Яндекса». Проверка доступна в вебмастерской при условии подтвержденных прав на сайт.

Как проверить ответ сервера сайта. Ошибки 200, 301, 404, 302, 500, 503, 550

В поле URL вводится нужный адрес, выбирается робот и время.

Коды ошибок сервера: 200, 301, 404, 302, 500, 503, 550

200 — означает «Все отлично, я посылаю данные, которые вы просили». В зависимости от метода, начинка будет отличаться:

Ошибка 200 — неправильное утверждение, так как это число отдает корректно работающая страница.

301 — означает, что запрошенный ресурс навсегда перемещен (moved permanently), ему присвоен новый URI-адрес. Вариант применяется для коррекции пути посетителей, которые приходят по неправильной версии домена, например, набирают его с WWW. При включенном mod rewrite в htaccess дописывается:

RewriteEngine On
RewriteCond % ^www.(.*) [NC]
RewriteRule ^(.*)$ https://%1/$1 [R=301,L]

Обратная ситуация прописывается по аналогии. При использовании кода рекомендуется выполнить бэкап исходного файла, а после установки проверить ответ сервера.

При перемещении содержимого в пределах домена достаточно указать:

Redirect 301 /stariy adres https://site. ru/noviy adres

Заявленному статусу соответствует ошибка 301, когда старое местоположение по-прежнему актуально и сохранено для индексирования или при злоупотреблении редиректами.

Частый вопрос, возникающий при редиректе 301 : что произойдет с индексацией и входящим ссылочным? Переиндексация займет от одного дня до пары месяцев, разумно ее ускорить своими силами. После завершения процесса ссылочное и его вес перейдут на новый адрес без потерь. Способ актуален при смене домена, если жаль терять наработанные пузомерки сайта, находящегося под фильтрами.

302 — означает, что страница временно отсутствует, потому что размещена под другим адресом. Ответ сервера 302 кэшируется, если указан Cache-Control или в случае просроченного поля заголовка.

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

Внимание! При выполнении GET–запроса с разрешенным доступом без изменения структуры документа, ответ 302 не подходит, сервером должна выдаваться ошибка 304.

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

500 — серверная ошибка, выполнить запрос невозможно. За исключением случаев, когда при ответе на запрос в HEAD включается объект, который содержит пояснение ошибочной ситуации. Ошибка 500 свидетельствует о столкновении с непредвиденным условием.

503 — невозможно обработать запрос. Это происходит, когда сервер перегружен, или в процессе обслуживания. Смысл в том, что это временное состояние. Если известно, сколько понадобится времени для исправления ситуации (длина задержки), в заголовке указывается параметр Retry-After. Буквальный перевод с английского — «попробуйте позже». Если Retry-After не указан, клиент обрабатывает ответ по аналогии с 500.

550 — относится не к HTTP, а к протоколу SMTP. Означает, что сервер SMTP не может доставить отправленное письмо пользователю, потому что его почтовый ящик не существует, либо клиент вошел неправильно, или учетная запись была отключена и заменена на новую. Среди SMTP-сообщений ошибка 550 считается наиболее распространенной. Дополняется информацией о том, что требуемое действие не выполнено: например, недоступен почтовый ящик, или содержит указания, относящиеся к спаму.

Любой код стоит воспринимать, как лаконичное информационное сообщение. Если вы — вебмастер, столкнувшийся с error 4XX или 5XX на своем ресурсе, не паникуйте. Внимательно прочтите дополнительное описание, если оно вывелось на экран. В случаях, когда описание отсутствует, рекомендуется просмотреть серверный error. log — там доступна подробная информация о причинах произошедшего.

HTTP протокол: основные правила Интернета, которые должен знать каждый веб-разработчик. Как браузер взаимодействует с сервером.

Успешные коды состояния HTTP сервера: 200, 201, 202, 203, 204, 205, 206

Привет, читатель блога ZametkiNaPolyah. ru! Продолжим знакомиться с протоколом HTTP в рубрике серверы и протоколы и ее разделе HTTP протокол. В этой записи мы с тобой рассмотрим успешные коды состояния HTTP сервера, которые, как ты понимаешь, начинаются с двойки. Для начала мы посмотрим на список успешных кодов состояния и дадим и короткое пояснение, а затем мы посмотрим на то, как успешные коды состояния связаны с методами HTTP запроса. В конце этой публикации мы более подробно поговорим про каждый из успешных кодов состояния.

Успешные коды состояния HTTP сервера: 200, 201, 202, 203, 204, 205, 206

Успешные коды состояния HTTP сервера: 200, 201, 202, 203, 204, 205, 206

Общее описание успешных кодов состояния HTTP сервера

Если вы хотите узнать всё про протокол HTTP, обратитесь к навигации по рубрике HTTP протокол. Успешные коды состояния HTTP сервера говорят клиенту о том, что его запрос успешно получен, понят, принят и обработан. Успешные коды состояния HTTP сервера всегда начинаются с двойки, давайте сведем в одну таблицу все успешные HTTP коды, как мы это делали для информационных кодов.

Перейдем к рассмотрению HTTP кодов состояний из класса 2хх (если ты еще не знаешь про классы состояния HTTP)

HTTP код состояния 200 (успешно). HTTP код состояния 201 (создано). HTTP код состояния 202 (принято)

HTTP код состояния 200 сообщает о том, что запрос клиента был успешно принят и обработан. Информация, которая будет возвращена пользователю зависит от метода HTTP запроса. Давайте составим небольшую таблицу с методами и тем, какое содержимое им вернет сервер с HTTP кодом состояния 200.

Метод HTTP запроса Содержимое HTTP ответа с кодом 200
GET В ответ на метод GET клиент получит HTTP сообщение с кодом 200 и объект, который расположен по указанному URI в запросе (URI в HTTP).
POST Если клиент отправляет запрос методом POST, то в ответ он получает сообщение с кодом состояния 200 с описание объекта или результатом действия метода POST.
TRACE Клиент, отправивший запрос методом TRACE, получит HTTP ответ с кодом состояния 200, который будет содержать сообщение, полученное конечным сервером.
HEAD В ответ на метод HEAD клиент получит сообщение с кодом состояния 200, в котором не будет тела сообщения

HTTP код 200 мы рассмотрели, давайте перейдем к коду 201.

HTTP код состояния 201 сообщает клиенту о том, что запрос успешно выполнен и в результате этого запроса появился новый ресурс по указанному в запросе URI. Но сервер вместо кода 201 может послать код 202 в том случае, если он не может выполнить запрос клиента немедленно. Давайте перейдем к рассмотрению HTTP кода состояния 202.

HTTP код состояния 202 сообщает клиенту о том, что его запрос успешно принят на обработку, но обработка сервером еще не завершена. В итоге сервер может выполнить запрос клиента, а может его отклонить. Ответы с кодом состояния 202 уклончивы и это сделано преднамеренно, например, для того, чтобы дать серверу выполнить какой-то более важный запрос, а потом ответить клиенту, которому он отправлял HTTP сообщение с кодом состояния 202.

HTTP код состояния 203 (не авторская информация). HTTP код состояния 204 (нет содержимого). HTTP код состояния 205 (сбросить содержимое). HTTP код состояния 206 (частичное содержимое)

Перейдем к следующему успешному коду состояния HTTP сервера – код состояния 203, который говорит клиенту о том, что информация не авторская. HTTP код состояния 203 возвращает в заголовке своего сообщения информацию о том, что данное сообщение не является оригиналом, который доступен на первоначальном сервере и, возможно, информация взята из кэша HTTP сервера.

HTTP код состояния 204 говорит клиенту о том, что сервер успешно выполнил запрос, но никакой новой полезной информации нет. HTTP код состояния 204 используется чаще всего для работы с HTML формами для ввода пользовательских данных. Ответ с кодом состояния 204 не должен содержать тела сообщения.

HTTP код состояния 205 говорит браузеру о том, что ему следует (читай требования HTTP) отменить просмотр документа. Такой код состояния HTTP сервера чаще всего используется для очистки форм с целью повторного или последующего ввода и не содержит HTTP объекта.

HTTP код состояния 206 говорит о том, что был выполнен частичный метод GET. Чтобы получить такой код состояния запрос клиента должен содержать поле заголовка Range, в котором указывается диапазон в байтах, при этом ответ HTTP сервера должен содержать поле заголовка Content-Range, либо поле заголовка Content-Type.

Мы рассмотрели успешные коды состояния HTTP, давайте перейдем к кодам перенаправления. Еще есть коды ошибок клиента и коды ошибок сервера, о которых можно узнать на моём сайте. А если тебе нужна информацию обо всех кодах состояния, обратись к справочнику HTTP кодов состояния, в котором есть полное описание всех кодов.

Что такое ошибка 500 и когда она возникает

Что такое ошибка 500 и когда она возникает

Пользователи интернета и владельцы сайтов периодически сталкиваются с различными ошибками на веб-страницах. Одной из самых распространенных ошибок является error 500 (ошибка 500). Поговорим в нашей статье о том, что это за ошибка и как ее исправить.

Где и когда можно встретить ошибку 500

Вы можете увидеть ошибку на любом веб-ресурсе, браузере и устройстве. Она не связана с отсутствием интернет-соединения, устаревшей версией операционной системы или браузера. Кроме того, эта ошибка не указывает на то, что сайта не существует или он больше не работает.

Отображаться ошибка может по-разному. Вот пример:

Ошибка 500

Если ошибка появилась на вашем сайте, то нужно скорее ее исправлять. Далее я расскажу, как это можно сделать.

Причины возникновения ошибки

Итак, ошибка 500 возникает, когда серверу не удается обработать запрос к сайту. Из-за этого пользователи не могут попасть на сайт, а поисковые системы полноценно с ним работать. Очевидно, что ошибка нуждается в исправлении. В первую очередь необходимо найти проблему.

Основной причиной ошибки 500 может быть:

Год хостинга в подарок при заказе лицензии 1С-Битрикс

Выбирайте надежную CMS с регулярными обновлениями системы и профессиональной поддержкой.

Как получить больше данных о причине ошибки

Что означает ошибка 500, мы теперь знаем. Когда она перестала быть таким загадочным персонажем, не страшно копнуть глубже — научиться определять причину ошибки. В некоторых случаях это можно сделать самостоятельно, так что обращаться за помощью к профильному специалисту не понадобится.

Самые частые причины ошибки 500 можно распознать по тексту ошибки или внешнему виду страницы.

Давайте узнаем, что скрывается за пустой страницей, обратившись к инструментам разработчика. Эта браузерная панель позволяет получить информацию об ошибках и другие данные (время загрузки страницы, html-элементы и т. д.).

Как открыть панель разработчика

Причины ошибки 500

Более детальную диагностику можно провести с помощью логов.

Как вы видите, данных в логи записывается немало, поэтому они разделены по типам. За сведениями о нашей ошибке можно обратиться к логам ошибок (error_log). Обычно такие логи предоставляет служба поддержки хостинга, на котором размещен сайт. В Timeweb вы можете включить ведение логов и заказать необходимые данные в панели управления. Разобраться в полученных логах поможет статья «Чтение логов».

Как устранить ошибку

Теперь поговорим о том, как исправить ошибку 500. Вернемся к популярным причинам этой проблемы и рассмотрим наиболее эффективные способы решения.

Ошибки в скриптах сайта

Скрипт не запускается

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

Не хватает оперативной памяти

Если в логах вы видите ошибку «Allowed memory size», для устранения ошибки 500 стоит оптимизировать работу скрипта. Вы можете воспользоваться специальными расширениями для анализа производительности скрипта или обратиться за помощью к специалисту, который поработает над его оптимизацией.

Если ваш сайт размещен на отдельном физическом или виртуальном сервере, можно попробовать увеличить максимальное использование оперативной памяти на процесс (memory_limit). На шаред хостинге этот параметр обычно не изменяется, но есть возможность купить хостинг помощнее.

Ошибки в CMS

Если код CMS содержит неверный синтаксис, это может вывести сайт из строя. В таком случае логи сообщат вам об ошибке 500 текстом «PHP Parse error: syntax error, unexpected». Так происходит, когда некорректно работает плагин (или тема, используемая в CMS, но реже) либо есть ошибки в коде. Ошибка может быть допущена случайно, произойти при обновлении плагина или версии CMS.

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

Ошибка 500 из-за плагинов ВордпрессТакже в большинстве случаев подобные проблемы помогает решить поддержка CMS.

Информацию о других распространенных ошибках вы можете найти в статье «6 наиболее часто возникающих ошибок HTTP и способы их устранения».

Источники:

https://firelinks. ru/sozdanie-saita/366-kak-proverit-otvet-servera. html

https://zametkinapolyah. ru/servera-i-protokoly/uspeshnye-kody-sostoyaniya-http-servera-200-201-202-203-204-205-206.html

https://timeweb. com/ru/community/articles/chto-takoe-oshibka-500-i-kogda-ona-voznikaet

Понравилась статья? Поделить с друзьями:
  • Ошибка 1а59 вольво
  • Ошибка 200 canon 5140
  • Ошибка 1а39 epson
  • Ошибка 20 фн ограничение ресурса фн aqsi
  • Ошибка 1p2 на котле аристон как исправить