Ошибка 500 означает, что сервер сайта получил запрос, но сломался, пока его обрабатывал: упал скрипт, не хватило памяти, в настройках опечатка. Ошибка 502 Bad Gateway — что веб-сервер работает, а программа за ним, которая должна собрать страницу, не ответила. В обоих случаях проблема на стороне сайта, а не у посетителя. Ниже — что значат коды 500 и 502, что может сделать посетитель, и как владельцу найти причину по логам. Все ошибки и строки логов в статье настоящие: мы воспроизвели их на тестовом сервере с nginx и PHP-FPM 26 сентября 2026 года.

Что означает ошибка 500
Код ошибки 500 — Internal Server Error, «внутренняя ошибка сервера». По стандарту HTTP сервер отвечает так, когда столкнулся с непредвиденной ситуацией и не смог выполнить запрос. Это самый общий код: сервер как бы говорит «у меня что-то сломалось», но не уточняет что. Подробности есть только в логах сервера.
Коды, которые начинаются на 5, — ошибки сервера, в отличие от 4xx, где причина в запросе (например, 404 — страницы нет). Поэтому 500 ошибка сервера не лечится со стороны браузера: очистка кеша и смена устройства тут не помогут.
Самые частые причины ошибки 500 на сайте:
- Фатальная ошибка PHP — в коде сайта, плагине или теме. Часто появляется после обновления PHP, когда старый код вызывает функцию, которой больше нет, — наш случай разобран в статье как обновить PHP на WordPress.
- Нехватка памяти — скрипту не хватило лимита
memory_limit. - Ошибка в
.htaccess— на хостинге с Apache одна неверная строка роняет весь сайт. - Неверные права на файлы или битые файлы после неудачного обновления.
- База данных недоступна или повреждена — хотя WordPress в этом случае обычно пишет своё сообщение об ошибке соединения с базой.
Что делать, если ошибка 500 или 502 на чужом сайте
Если вы просто зашли на сайт и увидели «500 Internal Server Error» или «502 Bad Gateway», исправить это вы не можете, но можете:
- обновить страницу через минуту-другую — 502 часто бывает во время перезапуска сервера или обновления сайта и проходит сама;
- не отправлять форму повторно — если ошибка возникла при оплате или заказе, сначала проверьте почту или личный кабинет: запрос мог пройти;
- проверить, у всех ли так — сервисами из статьи почему не открывается сайт;
- написать владельцу сайта, если ошибка держится долго, — указав адрес страницы и время.
Ошибка 500 на своём сайте: ищем причину в логах
Главное правило: не угадывать, а читать лог. Чтобы показать, как это выглядит, мы положили на тестовый сервер файл со старым кодом — вызовом функции create_function(), которую удалили в PHP 8.0. Именно так сайты падают после обновления PHP. Ответ сервера:
curl -s -i http://127.0.0.1:8080/broken.php | head -1
HTTP/1.1 500 Internal Server Error
Посетитель видит пустую страницу или «500», а причина лежит в логе PHP:
NOTICE: PHP message: PHP Fatal error: Uncaught Error: Call to undefined function create_function() in /var/www/html/broken.php:2
Одна строка — и понятно всё: какой файл, какая строка, какая функция. Где искать такие логи:
| Где работает сайт | Где лог ошибок |
|---|---|
| Обычный хостинг | В панели хостинга, раздел логов; часто файл error_log в папке сайта |
| VPS с nginx | /var/log/nginx/error.log и лог PHP-FPM (путь зависит от версии PHP) |
| VPS с Apache | По умолчанию /var/log/apache2/error.log (Debian, Ubuntu) |
| Docker | docker compose logs имя_сервиса |
| WordPress | wp-content/debug.log, если включить отладку (см. ниже) |
Интересная деталь. Пока на нашем тестовом PHP не было рабочего конфига, та же ошибка отдавалась с кодом 200 OK, а текст ошибки с путём к файлу печатался прямо на странице. Это настройка display_errors: в php.ini-production она выключена, и тогда посетитель получает честную 500, а подробности уходят в лог. Если вы видите на сайте «Fatal error» с путями к файлам — выключите вывод ошибок, это лишняя информация для взломщиков (настройки ошибок в PHP).
Ошибка 500 в WordPress
В WordPress фатальная ошибка PHP обычно выглядит не как «500», а как сообщение о критической ошибке на сайте (в английской версии — «There has been a critical error on this website»), и на почту администратора приходит письмо со ссылкой для входа в режиме восстановления. Порядок действий из документации WordPress:
- Проверьте почту администратора — в письме указан плагин или тема, где произошла ошибка.
- Включите журнал ошибок в
wp-config.php— так, чтобы ошибки писались в файл, а не на экран:define( 'WP_DEBUG', true ); define( 'WP_DEBUG_LOG', true ); define( 'WP_DEBUG_DISPLAY', false ); @ini_set( 'display_errors', 0 );
Лог появится в
wp-content/debug.log. После починки вернитеWP_DEBUGвfalse: разработчики WordPress не советуют держать отладку включённой на рабочем сайте. - Переименуйте
.htaccessв.htaccess_old— документация называет испорченный.htaccessсамой вероятной причиной внутренней ошибки сервера на Apache. Если сайт ожил, пересохраните постоянные ссылки в админке, и WordPress создаст файл заново. - Отключите плагины. Если админка недоступна, переименуйте папку
wp-content/pluginsчерез файловый менеджер или SFTP. - Переключитесь на стандартную тему — если ошибка в теме.
- Увеличьте лимит памяти PHP — если в логе «Allowed memory size exhausted».
Перед любыми правками сделайте резервную копию — это советует и сама документация. Как быстро снять и восстановить копию, — в статье резервная копия сайта.
Ошибка 502 Bad Gateway: что это значит
502 Bad Gateway в переводе — «плохой шлюз». Сайт обычно устроен в два слоя: снаружи веб-сервер (nginx) принимает запрос, а страницу собирает программа за ним — PHP-FPM, Node.js, Python или контейнер с сервисом. Ошибка 502 значит, что nginx работает, но от программы за ним получил не ответ, а отказ или ничего (MDN). Та же схема у обратного прокси: если сервис за Nginx Proxy Manager лёг, прокси отдаст 502.
Так выглядит ответ, когда мы остановили PHP-FPM на тестовом сервере:
HTTP/1.1 502 Bad Gateway Server: nginx/1.28.3 Content-Type: text/html Content-Length: 157 <html> <head><title>502 Bad Gateway</title></head> <body> <center><h1>502 Bad Gateway</h1></center> <hr><center>nginx/1.28.3</center>
502 Bad Gateway в nginx: причина по логу
Страница ошибки одинаковая, а причины разные — их различает лог error.log nginx. Три настоящие строки с нашего теста:
| Строка в логе | Что случилось | Что делать |
|---|---|---|
connect() failed (113: Host is unreachable) while connecting to upstream | Сервис за nginx остановлен (мы выключили контейнер PHP) | Запустить сервис, посмотреть, почему упал: systemctl status, docker compose ps |
connect() failed (111: Connection refused) while connecting to upstream | По этому адресу никто не слушает: неверный порт или сервис ещё не запустился | Сверить порт в конфиге nginx и в настройках сервиса |
whoami could not be resolved (3: Host not found) | Прокси не находит сервис по имени — в Docker так бывает, когда контейнер остановлен или не в той сети | docker ps, docker network inspect |
Посмотреть последние ошибки:
sudo tail -n 50 /var/log/nginx/error.log sudo systemctl status php8.3-fpm # версию PHP подставьте свою
Ещё частые причины 502: PHP-FPM падает от нехватки памяти (на слабом сервере помогает swap), закончилось место на диске, сервис перезапускается после обновления.
504 Gateway Time-out — родственница 502
Если программа за nginx жива, но отвечает слишком долго, будет не 502, а 504. Мы поставили тестовому скрипту паузу 15 секунд при таймауте 5 секунд:
HTTP/1.1 504 Gateway Time-out
upstream timed out (110: Operation timed out) while reading response header from upstream
Лечится поиском медленного места — тяжёлого запроса к базе, зависшего внешнего API. Поднимать таймаут (fastcgi_read_timeout или proxy_read_timeout в документации nginx) стоит только для заведомо долгих операций вроде импорта или отчётов.
Ошибка 500 и 502: коротко
| 500 Internal Server Error | 502 Bad Gateway | |
|---|---|---|
| Кто сломался | Сам код сайта или его настройки | Программа за веб-сервером не отвечает |
| Типичная причина | Фатальная ошибка PHP, .htaccess, память | PHP-FPM или контейнер остановлен, неверный порт |
| Где смотреть | Лог PHP, debug.log WordPress | /var/log/nginx/error.log |
| Пройдёт ли само | Обычно нет | Иногда — если сервер просто перезапускался |
Чтобы узнавать о таких падениях раньше посетителей, поставьте мониторинг доступности — например, Uptime Kuma из статьи Docker Compose для начинающих.
Источники: RFC 9110 (HTTP), MDN: 500, MDN: 502, частые ошибки WordPress, отладка WordPress, create_function в PHP, модуль fastcgi nginx. Проверено 26 сентября 2026 года.








