Ошибка 500 после обновления Битрикс: порядок диагностики
Ошибка 500 — только внешний симптом. Показываем, где найти первичное исключение после обновления Битрикс и как не уничтожить доказательства случайными правками.
После обновления ядра или модуля браузер может показать только 500 Internal Server Error. Этот ответ не объясняет причину: ею может быть синтаксическая ошибка, несовместимая версия PHP, отсутствующее расширение, нехватка памяти, ошибка подключения к базе или старый код, который перестал соответствовать новому API.
1. Определите границы сбоя
Проверьте главную, административную часть, отдельную статическую страницу и простой PHP-файл вне шаблона. Если не работает только один раздел, ищите его компонент, шаблон или обработчик. Если падают и публичная, и административная части, приоритет у окружения, ядра, подключения к базе и глобальных обработчиков.
- Запишите URL и время запроса с точностью до минуты.
- Проверьте, воспроизводится ли ошибка без авторизации и на другом узле, если их несколько.
- Уточните, какие пакеты обновлялись и завершилась ли установка штатно.
- Не включайте подробный вывод ошибок на публичном сайте: он может раскрыть пути и параметры подключения.
2. Найдите первичную запись в логах
Смотрите журналы PHP-FPM, Apache или Nginx и системный журнал контейнера. Ищите запись в тот же момент и по тому же URI. Сообщение Allowed memory size exhausted, Call to undefined method, Class not found или SQLSTATE задаёт разные ветки диагностики.
date
tail -n 200 /var/log/nginx/error.log
journalctl -u php8.2-fpm --since "10 minutes ago"
docker logs --since 10m php-containerИмена сервисов и файлов зависят от окружения. Команды выполняйте с учётной записью, которой разрешено читать журналы; не публикуйте их содержимое целиком.
3. Сверьте окружение и совместимость
Проверьте фактическую версию PHP в веб-контексте, загруженные расширения, лимит памяти и драйвер базы. CLI и PHP-FPM могут использовать разные конфигурации. Затем запустите штатную проверку системы Битрикс и сопоставьте требования обновлённых модулей с текущим окружением.
4. Исключите локальные изменения ядра
Если файлы /bitrix/modules/ изменялись вручную, обновление могло объединить несовместимые версии. Сравнивайте с чистым дистрибутивом той же версии. Пользовательский код должен находиться в /local/; переносить правки из ядра вслепую нельзя.
5. Проверьте кеш и схему базы
Кеш очищают после фиксации логов и только штатным способом. Если обновление прервалось, проверьте журнал установки и состояние таблиц; не запускайте произвольные SQL-команды из форумов. Перед продолжением создайте снимок текущего состояния, даже если оно уже неисправно.
Когда нужен откат
Откатывайтесь, если известна последняя рабочая копия, зафиксировано окно данных и исправление нельзя безопасно проверить в текущем состоянии. Откат только файлов без согласованной базы может создать новую несовместимость. После восстановления повторите обновление на тестовой копии и оформите регрессионный чек-лист.
Результат диагностики
Хороший итог — не исчезнувшая после перезагрузки ошибка, а документированная первопричина: конкретный стек, несовместимый модуль или параметр окружения, исправление, проверенный сценарий и условие отката.