Содержание
- 1) Зафиксируйте симптомы
- 2) Посмотрите логи — это №1 источник причины
- 3) Откатите последние изменения (самый быстрый “фикс”)
- 4) Проверьте конфигурацию веб-сервера
- 5) Частые причины 500 и точечные решения
- 6) Если сайт на WordPress (очень частый кейс)
- 7) Если ошибка только на одной странице/функции
- 8) Быстрый чек-лист “за 10 минут”
- Как предотвратить 500 в будущем
1) Зафиксируйте симптомы
- Ошибка на всех страницах или только на части?
- Возникает постоянно или периодически?
- Только у вас или у всех пользователей?
- Связана с конкретным действием (форма, фильтр, поиск, корзина)?
Это поможет сузить круг: конфиг/сервер vs. код/плагин vs. нагрузка.
2) Посмотрите логи — это №1 источник причины
Где искать:
- Nginx/Apache error log (обычно /var/log/nginx/error.log или /var/log/apache2/error.log)
- PHP-FPM log (/var/log/php*-fpm.log)
- Логи приложения: Laravel (storage/logs), Symfony, Bitrix, 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), права на директории/кеш/загрузки.
C) Недостаточно памяти / лимитов PHP
Симптом: Allowed memory size exhausted, max_execution_time и т.п.
Решение: увеличить memory_limit, поднять max_execution_time, оптимизировать запрос/скрипт.
D) Падение PHP-FPM / приложения
Симптом: 502 бывает чаще, но иногда цепочкой приводит к 500.
Решение: проверить статус php-fpm, рестарт сервиса, посмотреть ошибки в логах.
E) Ошибка кода / исключение
Симптом: Fatal error, Uncaught Exception.
Решение: включить безопасный debug (на staging), найти точку падения по stack trace, исправить модуль/плагин/шаблон.
F) База данных не отвечает / таймауты
Симптом: ошибки подключения, timeouts в логах.
Решение: проверить доступность DB, лимиты соединений, slow query log, индексы, кеширование.
G) Перегрузка сервера
Симптом: 500 появляется под нагрузкой, скачками.
Решение: посмотреть CPU/RAM/IO, включить кеширование, ограничить тяжёлые эндпоинты.
6) Если сайт на WordPress (очень частый кейс)
Быстрый сценарий:
- Отключите плагины (переименовать папку wp-content/plugins)
- Переключите тему на дефолтную
- Включите логирование ошибок (WP_DEBUG, WP_DEBUG_LOG)
- Проверьте .htaccess и лимиты PHP
7) Если ошибка только на одной странице/функции
Проверьте:
- конкретный контроллер/скрипт
- параметры запроса (длинные URL, фильтры, сортировки)
- размер заголовков/cookie (бывает “упирается” в лимит апстрима)
- обработку файлов (загрузка, генерация отчётов)
8) Быстрый чек-лист “за 10 минут”
- Логи Nginx/Apache + PHP + приложение
- Откат последнего деплоя/плагина/правил
- Проверка .htaccess / nginx -t
- Права/владелец на кеш/загрузки
- Лимиты памяти/таймауты
- Статус PHP-FPM/приложения/DB
- Нагрузка сервера
Как предотвратить 500 в будущем
- staging и автотесты перед релизом
- централизованный логинг + алерты
- мониторинг ресурсов и ошибок
- лимиты + rate limiting для тяжёлых эндпоинтов
- регулярный аудит плагинов/модулей
Источник: Как исправить ошибки 500 на сайте: пошаговая инструкция

