Как исправить ошибки 500 на сайте: пошаговая инструкция

1) Зафиксируйте симптомы

  • Ошибка на всех страницах или только на части?

  • Возникает постоянно или периодически?

  • Только у вас или у всех пользователей?

  • Связана с конкретным действием (форма, фильтр, поиск, корзина)?

Это поможет сузить круг: конфиг/сервер vs. код/плагин vs. нагрузка.

SEO под ключ: превратите сайт в рабочий канал продаж Подробнее

2) Посмотрите логи — это №1 источник причины

Где искать

  • Nginx/Apache error log

    • Nginx: обычно /var/log/nginx/error.log

    • Apache: /var/log/apache2/error.log или /var/log/httpd/error_log

  • PHP-FPM log (если PHP): /var/log/php*-fpm.log

  • Логи приложения: Laravel (storage/logs), Symfony (var/log), Bitrix (/bitrix/php_interface/... и журналы), WordPress (debug.log при включении).

Что искать в логах

  • PHP Fatal error, Uncaught Exception

  • Allowed memory size exhausted (не хватает памяти)

  • Permission denied (права/владелец)

  • Prematurely closed connection / upstream sent too big header

  • rewrite or redirection cycle (зацикливание редиректов)

  • connect() failed (111: Connection refused) (апстрим/бэкенд не отвечает)

3) Откатите последние изменения (самый быстрый “фикс”)

Если 500 началась “вдруг”:

  • откат деплоя/релиза;

  • отключение последних плагинов/модулей;

  • откат изменений в .htaccess, конфиге Nginx, PHP.ini, env-конфигах.

Если после отката исчезло — вы нашли область проблемы.

4) Проверьте конфигурацию веб-сервера

Для Nginx

  • Проверьте синтаксис: nginx -t

  • Перегрузка: systemctl reload nginx

Для Apache

  • Проверьте конфиг: apachectl configtest

  • Перезапуск/рестарт сервиса.

Типовые причины:

  • ошибка в правилах rewrite;

  • неправильный путь к сокету PHP-FPM;

  • конфликты виртуальных хостов.

5) Частые причины 500 и точечные решения

A) Ошибка в .htaccess (Apache) или rewrite-правилах

Симптом: 500 появляется сразу после правки правил.
Решение: временно переименуйте .htaccess (например, .htaccess.bak) и проверьте.

B) Права доступа и владелец файлов

Симптом: Permission denied в логах.
Решение:

  • проверьте владельца (www-data/nginx/apache);

  • права на директории/кеш/загрузки (особенно storage, cache, uploads).

C) Недостаточно памяти / лимитов PHP

Симптом: Allowed memory size exhausted, max_execution_time и т.п.
Решение:

  • увеличить memory_limit;

  • поднять max_execution_time для тяжёлых операций;

  • оптимизировать запрос/скрипт, который падает.

D) Падение PHP-FPM / приложения

Симптом: 502 бывает чаще, но иногда цепочкой приводит к 500 на уровне приложения.
Решение:

  • проверить статус php-fpm;

  • рестарт сервиса;

  • посмотреть ошибки в логах PHP и приложения.

E) Ошибка кода / исключение

Симптом: Fatal error, Uncaught Exception.
Решение:

  • включить безопасный debug (на staging);

  • найти точку падения по stack trace;

  • исправить модуль/плагин/шаблон.

F) База данных не отвечает / таймауты

Симптом: ошибки подключения, timeouts в логах.
Решение:

  • проверить доступность DB, лимиты соединений;

  • slow query log;

  • индексы, кеширование.

G) Перегрузка сервера

Симптом: 500 появляется под нагрузкой, скачками.
Решение:

  • посмотреть CPU/RAM/IO, количество процессов;

  • включить кеширование (страницы/опкод/объекты);

  • ограничить тяжёлые эндпоинты, оптимизировать.

Экономьте до 90% времени на продвижение Подробнее

6) Если сайт на WordPress (очень частый кейс)

Быстрый сценарий:

  1. Отключите плагины (переименовать папку wp-content/plugins).

  2. Переключите тему на дефолтную.

  3. Включите логирование ошибок (WP_DEBUG, WP_DEBUG_LOG).

  4. Проверьте .htaccess и лимиты PHP.

7) Если ошибка только на одной странице/функции

Проверьте:

  • конкретный контроллер/скрипт;

  • параметры запроса (длинные URL, фильтры, сортировки);

  • размер заголовков/cookie (бывает “упирается” в лимит апстрима);

  • обработку файлов (загрузка, генерация отчётов).

8) Быстрый чек-лист “за 10 минут”

  1. Логи Nginx/Apache + PHP + приложение

  2. Откат последнего деплоя/плагина/правил

  3. Проверка .htaccess / nginx -t

  4. Права/владелец на кеш/загрузки

  5. Лимиты памяти/таймауты

  6. Статус PHP-FPM/приложения/DB

  7. Нагрузка сервера

Как предотвратить 500 в будущем

  • staging и автотесты перед релизом;

  • централизованный логинг + алерты;

  • мониторинг ресурсов и ошибок;

  • лимиты + rate limiting для тяжёлых эндпоинтов;

  • регулярный аудит плагинов/модулей.

(Голосов: 2, Рейтинг: 5)

Вам подойдут следующие услуги
Видео по теме