Ошибка 500 Internal Server Error: что означает и как исправить
Самая честная ошибка интернета: сервер получил запрос, попытался его обработать — и сломался, не объяснив почему. Разбираем, что прячется за кодом 500, как найти настоящую причину за пять минут и что делать, если сайт ваш.
Ошибка 500 Internal Server Error означает, что сервер столкнулся с внутренней проблемой и не смог выполнить запрос. Ключевое слово — внутренней: запрос дошёл, сервер жив и отвечает, но при обработке что-то упало. В отличие от «инфраструктурных» ошибок 502 и 504, код 500 почти всегда указывает на проблему в самом приложении — в коде, конфигурации или окружении сайта.
Важно понимать место 500-й в семействе. 502 Bad Gateway — прокси не дождался внятного ответа от бэкенда; 503 — сервер перегружен или на обслуживании; 504 — бэкенд не ответил вовремя. А 500 — «я попробовал и сломался». Полная карта кодов — в нашем справочнике HTTP-статусов.
Если вы посетитель
Сделать можно немногое, потому что проблема не у вас. Обновите страницу через минуту — единичные 500-е часто вызваны кратковременным сбоем и проходят сами. Если ошибка повторяется, проверьте сайт с другого устройства, чтобы исключить редкий случай кривого кэша, и возвращайтесь позже. Всё остальное — дело владельца сайта.
Если сайт ваш: откуда берётся 500
За годы разборов таких инцидентов причины сводятся к короткому списку — идите по нему сверху вниз.
1. Ошибка в коде после обновления. Самая частая причина. Обновили плагин, тему, зависимость, выкатили релиз — и получили фатальную ошибку. Характерный признак: 500 появилась сразу после изменения. Лечение — откат.
2. Повреждённый .htaccess. На Apache-хостингах одна лишняя строка в .htaccess кладёт весь сайт. Переименуйте файл в .htaccess.bak — если сайт ожил, причина найдена; пересоберите файл заново (в WordPress — сохранением настроек постоянных ссылок).
3. Исчерпание лимитов PHP. Скрипт упёрся в лимит памяти (memory_limit) или времени выполнения. Типично для тяжёлых страниц админки, импорта товаров, генерации отчётов. В логе будет прямая строка «Allowed memory size exhausted».
4. Неверные права на файлы. После переноса или ручной заливки файлов права 777 или «не тот владелец» заставляют сервер отказаться исполнять скрипты. Норма для большинства хостингов: 644 на файлы, 755 на папки.
5. Проблемы с базой данных. Строго говоря, часто маскируются под 500: приложение не смогло подключиться к БД или запрос упал. Проверьте доступность БД и место на диске — переполненный диск ломает и базу, и сессии, и кэш.
Главный инструмент — лог ошибок
Код 500 намеренно не сообщает деталей наружу — это правильно с точки зрения безопасности, но бесполезно для диагностики. Настоящая причина всегда написана в логе ошибок сервера. Где искать:
# типовые пути на VPS: tail -50 /var/log/nginx/error.log tail -50 /var/log/apache2/error.log tail -50 /var/log/php-fpm/error.log # на виртуальном хостинге: раздел «Логи» в панели управления
Смотрите последние строки в момент ошибки: там будет либо трейс исключения с именем файла и строкой, либо сообщение про память/таймаут, либо ошибка подключения к БД. Дальше проблема обычно решается за минуты — сложно не исправить, сложно найти.
Соблазн включить display_errors, чтобы «увидеть ошибку прямо на странице», понятен — но так вы покажете пути, версии и куски кода всем посетителям и ботам. Читайте логи: там то же самое, только без публичной огласки.
Если сайт на WordPress: короткая дорожка
На WordPress 500-я в девяти случаях из десяти — это плагин, тема или .htaccess. Быстрый протокол:
1. Отключите плагины разом. Нет доступа к админке (она тоже отдаёт 500) — переименуйте по FTP папку wp-content/plugins в plugins-off. Сайт ожил — верните имя папки и отключайте плагины по одному, пока не найдёте виновника.
2. Переключите тему на стандартную. Если дело не в плагинах — переименуйте папку активной темы: WordPress откатится на дефолтную.
3. Пересоздайте .htaccess. Удалите строки между маркерами BEGIN/END WordPress и сохраните настройки постоянных ссылок в админке — файл перегенерируется.
4. Поднимите memory_limit. Строка define('WP_MEMORY_LIMIT', '256M'); в wp-config.php — частое лекарство после установки тяжёлого плагина. Больше типовых болячек этой CMS — в статье о мониторинге сайта на WordPress.
Чек-лист: восстановление за 10 минут
| Минуты | Действие |
|---|---|
| 0–1 | Проверить масштаб: вся страница или отдельные разделы? Все посетители или часть? |
| 1–2 | Вспомнить, что менялось последним: релиз, плагин, настройка, крон. Если было — откатить |
| 2–5 | Открыть error-лог, найти строки на момент сбоя, прочитать фактическую причину |
| 5–8 | Проверить ресурсы: место на диске, память, состояние базы данных |
| 8–10 | Не нашли — тикет хостингу с точным временем и строками из лога; это ускоряет ответ в разы |
Развёрнутый план действий при любом падении — не только 500-м — у нас собран в статье «Сайт упал: первые 10 минут».
Чем 500 опасна для SEO и бизнеса
Поисковые роботы понимают 5xx-коды как временную проблему сервера, но терпение у них ограничено: если робот стабильно получает 500 при обходе, страницы начинают выпадать из индекса, а частота обхода снижается. Пара часов — не страшно; несколько дней — уже заметно по трафику.
Отдельная ловушка — «частичная» 500-я: главная работает, а корзина, оплата или личный кабинет падают. Внешне сайт жив, метрики доступности зелёные, а выручка стоит. Именно поэтому мониторить стоит не только главную, но и ключевые страницы сценария покупки — по одной проверке на каждую.
Как узнавать о 500-х раньше посетителей
Ошибка 500 — редкий случай, когда сервер сам честно сообщает о поломке кодом ответа. Значит, её идеально ловит автоматика: проверка доступности (GET) запрашивает страницу как обычный посетитель и фиксирует любой ответ, отличный от ожидаемого. Для экономных сценариев есть проверка HEAD — тот же контроль кода ответа без скачивания тела страницы.
Пруфен опрашивает сайт из 13 точек — 11 из них в России — с интервалом от 2 минут: как только вместо 200 приходит 500 — открывается инцидент и летит уведомление в Email, Telegram, Макс или звонком. Поставьте проверки на главную и на страницы оформления заказа — бесплатного тарифа хватает на 5 проверок.