hostprofi.ru
Подобрать хостинг
Термин·буква I

Internal Server Error (500)

краткое определение

Internal Server Error (500) — HTTP-статус ошибки, означающий, что сервер столкнулся с непредвиденной ситуацией и не смог выполнить запрос. Это общий код для серверных ошибок без конкретной причины: от синтаксической ошибки в коде до переполнения памяти или неверных прав на файл.

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

Частые причины ошибки 500

  • Синтаксическая ошибка в коде. Один сломанный PHP/Python/Node.js файл роняет весь сайт.
  • Неверные права доступа. Файлы скриптов (PHP, CGI) должны быть chmod 644, директории — 755. Если 777 или нет прав на чтение — 500.
  • Ошибка в .htaccess. Синтаксическая ошибка в директивах Apache вызывает 500 немедленно.
  • Исчерпание памяти. PHP-скрипт превысил memory_limit (например, 128 МБ) — процесс завершён с ошибкой.
  • Недоступная база данных. Если приложение не обрабатывает исключение подключения — падает с 500.
  • Таймаут скрипта. PHP max_execution_time истёк — сервер обрывает выполнение.
  • Повреждённый vendor/. Неполная установка зависимостей через composer или pip.

Как найти причину

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

# Логи nginx:
tail -50 /var/log/nginx/error.log

# Логи PHP-FPM:
tail -50 /var/log/php8.1-fpm.log

# Логи Apache:
tail -50 /var/log/apache2/error.log

# Системный журнал:
journalctl -u php8.1-fpm --since "10 minutes ago"

На виртуальном хостинге логи доступны через cPanel или FTP в папке logs/. Временно включи display_errors = On в php.ini для разработки — но никогда на продакшене.

История

Код 500 определён в исходной спецификации HTTP/1.0 в RFC 1945 (1996) как базовый код для всех непредвиденных серверных ошибок. В HTTP/1.1 (RFC 2616, 1999) группа 5xx была расширена: 502 Bad Gateway (ошибка проксирования), 503 Service Unavailable (сервис перегружен), 504 Gateway Timeout. В HTTP/2 (RFC 7540, 2015) и HTTP/3 коды статуса сохранены без изменений.

Смежные коды 5xx

КодНазваниеКогда возникает
500Internal Server ErrorНепредвиденная ошибка на сервере
502Bad GatewayПрокси получил неверный ответ от бэкенда
503Service UnavailableСервер перегружен или на обслуживании
504Gateway TimeoutБэкенд не ответил вовремя
507Insufficient StorageНет места для сохранения данных

500 ошибки в популярных CMS и фреймворках

WordPress 500 Internal Server Error: чаще всего — несовместимый плагин (деактивировать через FTP переименованием папки в wp-content/plugins/), превышение memory_limit PHP (увеличить в wp-config.php: define('WP_MEMORY_LIMIT', '256M')), ошибка в functions.php темы (переименовать тему в wp-content/themes/). Включить дебаггинг: define('WP_DEBUG', true); define('WP_DEBUG_LOG', true) — лог в wp-content/debug.log.

Laravel 500 ошибки: storage/logs/laravel.log — первое место для диагностики. Проблемы прав: chmod -R 775 storage bootstrap/cache && chown -R www-data storage. APP_DEBUG=true в .env временно показывает stack trace. Кэш конфигурации: php artisan config:clear && php artisan cache:clear решает многие необъяснимые 500. Django 500: settings.DEBUG=True + ALLOWED_HOSTS=['*'] для локальной диагностики.

На что обращать внимание

500-ошибка при деплое обычно означает синтаксическую ошибку или несовместимость версий. Первое действие — проверить лог PHP-FPM и nginx. Если 500 возникает периодически под нагрузкой — проверь OOM Killer (дмesг | grep oom) и лимиты памяти PHP. Настрой мониторинг с оповещением при росте числа 500-ошибок в nginx-логах — это ранний индикатор проблем.

Другие термины