Открыть сервисСервис

HTTP 500 Internal Server Error

HTTP 500 Internal Server Error — стандартный код состояния HTTP, обозначающий, что сервер столкнулся с непредвиденной ошибкой при обработке запроса клиента и не смог выполнить его. Код относится к классу серверных ошибок (5xx): клиент отправил корректный запрос, однако проблема возникла на стороне сервера. В отличие от 4xx-кодов, 500 не указывает на конкретную причину сбоя — это общая «заглушка», сигнализирующая о внутренней ошибке.

Характеристики кода

Согласно RFC 7231 (HTTP/1.1: Semantics and Content), сервер, возвращающий 500, должен указать в ответе, содержит ли тело ответа описание ошибки. На практике большинство серверов отдают HTML-страницу с текстом «Internal Server Error» без деталей, чтобы не раскрывать внутреннюю информацию о конфигурации (защита от инфоприватности).

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

Основные причины

Наиболее частые причины возникновения ошибки 500:

  • Синтаксические ошибки в коде сервера — исключение, необработанная ошибка выполнения, некорректная логика приложения.
  • Ошибки конфигурации веб-сервера — повреждённый или некорректный .htaccess (Apache), ошибки в nginx.conf, неправильные директивы виртуальных хостов.
  • Сбои файловых прав доступа — недостаточные права на файлы и каталоги приложения, запрет на запись в директорию сессий или кэша.
  • Исчерпание ресурсов — нехватка оперативной памяти, превышение лимита времени выполнения скрипта (max_execution_time в PHP), переполнение диска.
  • Сбои сторонних компонентов — недоступность базы данных, некорректный ответ внешнего API, отсутствие драйвера или расширения.
  • Повреждённые файлы приложения — частично загруженные или обновлённые файлы, конфликты версий.

Отличие от других ошибок 5xx

КодНазваниеЗначение
500Internal Server ErrorНеспецифическая ошибка сервера
501Not ImplementedСервер не поддерживает необходимый метод запроса
502Bad GatewayПромежуточный сервер получил некорректный ответ от вышестоящего
503Service UnavailableСервер временно не может обработать запрос (перегрузка, ТО)
504Gateway TimeoutПромежуточный сервер не получил ответ от вышестоящего вовремя

Ключевое отличие 500 от 503: при 503 сервер осознанно сообщает о недоступности (обычно временной), а 500 указывает на незапланированный сбой.

Диагностика

При появлении ошибки 500 первым шагом является проверка логов сервера:

  • Apache — файлы error.log и access.log (обычно в /var/log/apache2/ или /var/log/httpd/).
  • Nginx — error.log (по умолчанию /var/log/nginx/error.log).
  • PHP — лог ошибок PHP, включённый через error_log в php.ini; в режиме разработки (display_errors = On) детали ошибки выводятся прямо в браузере.

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

Устранение

Порядок действий при устранении 500 зависит от найденной причины. Если ошибка возникла после обновления кода — откат на предыдущую версию. Если после смены конфигурации — восстановление резервной копии конфига. Проверка прав доступа (chmod, chown), освобождение дискового пространства, увеличение лимитов памяти и времени выполнения — стандартные шаги.

Для веб-приложений на PHP рекомендуется включить подробное логирование ошибок, но отключить вывод ошибок на экран (display_errors = Off) в продакшен-среде.

См. также

Источники

  • RFC 7231 — HTTP/1.1: Semantics and Content
  • RFC 9110 — HTTP Semantics
  • Документация Apache HTTP Server
  • Документация Nginx
  • Документация PHP: обработка ошибок
Заметили ошибку или не согласны с информацией в статье? Напишите нам support@bfometr.ru