Восстановили работу сайта на MODX и безопасно обновили CMS после критических ошибок

О проекте

Ранее мы уже работали с сайтом Училища олимпийского резерва №1 и делали для него редизайн. А теперь клиент обратился к нам за техническими доработками и обновлением сайта на MODX Revolution.

На старте нужно было восстановить работу форм обратной связи, настроить защиту от спама и провести обновление CMS. В процессе стало понятно, что стандартный сценарий обновления не подходит: система отрабатывала с ошибками, часть пакетов устанавливалась некорректно, а после одной из попыток ручного обновления сайт начал отдавать 500 ошибку.

Чтобы выполнить работы безопасно, обновление мы проводили на технической копии сайта. Это позволило последовательно проверить изменения, пройти все этапы обновления в рабочей среде и только после этого подтвердить корректную работу системы.

Цель

Восстановить работу форм на сайте, защитить их от спама и провести обновление MODX так, чтобы система после работ работала стабильно и без ошибок.

Задачи

Проверить, из-за чего некорректно работает отправка заявок. Настроить защиту форм от спама. Подготовить сайт к обновлению, сделать резервную копию и пройти обновление CMS и компонентов по безопасному сценарию. После этого проверить, что сайт и административная часть работают корректно.

Этапы работы над проектом

Работу по проекту мы выстроили поэтапно. Сначала закрыли задачи, которые влияли на корректную работу сайта уже в моменте, а затем перешли к обновлению CMS. Такой порядок позволил сначала восстановить отправку заявок и настроить защиту форм, а уже после этого заняться диагностикой системы, подготовкой резервной копии и самим обновлением.

Восстановили работу форм

Сначала мы занялись формами обратной связи. Провели диагностику модуля отправки данных, нашли ошибки в конфигурации FormIt и конфликтующие настройки почтового транспорта. После этого исправили параметры отправки писем, привели их к корректному формату SMTP/PHPMailer и переработали необходимые чанки и сниппеты. Затем проверили отправку заявок и убедились, что письма корректно приходят на указанный email.

Настроили защиту от спама

После восстановления отправки мы внедрили защиту формы от спама. Для этого настроили скрытые поля, задержки и дополнительные фильтры от автоматических отправок, а затем отдельно протестировали поведение формы. В результате форма продолжила работать корректно, а количество ложных отправок удалось свести к минимуму.

Подготовили сайт к обновлению

Когда формы работали стабильно, мы перешли к подготовке сайта к обновлению. Провели аудит текущей сборки MODX и установленных компонентов, проверили возможные несовместимости между пакетами, версии PHP и серверные настройки на хостинге. После этого подготовили полную резервную копию сайта: отдельно файловую систему, отдельно базу данных, а также протестировали возможность отката. Так у нас появилась рабочая точка восстановления перед следующим этапом.

Обновили CMS по безопасному сценарию

На этапе обновления стало понятно, что стандартный сценарий через установщик MODX не подходит. При запуске /setup/ сайт начал отдавать 500 Internal Server Error, а в системе появились признаки некорректного частичного обновления. Это означало, что продолжать обновление напрямую было рискованно: можно было потерять работоспособность сайта и усложнить восстановление.

Ошибка 500 при запуске установщика MODX после нештатного обновления

После фиксации ошибки мы перешли к ручной диагностике файловой структуры. Проверили состояние ядра MODX, системных классов и подключаемых библиотек. Отдельно посмотрели файлы xPDO, так как они отвечают за базовый уровень работы системы и связь MODX с базой данных. Такая проверка помогла понять, какие части ядра могли быть затронуты при неудачном обновлении.

Проверка файлов ядра MODX и базовых классов xPDO

Затем мы проверили дополнительные системные библиотеки и файлы, включая phpThumb. Такие компоненты часто задействованы в обработке изображений и могут влиять на работу сайта после обновления ядра, особенно если часть файлов была заменена некорректно или осталась от старой версии.

Проверка системных библиотек сайта после сбоя обновления

После диагностики мы восстановили сайт из резервной копии, повторно загрузили дистрибутив MODX 2.8.8-pl и провели обновление пошагово. Сначала проверили целостность файлов ядра, затем обновили ключевые компоненты, включая FormIt и pdoTools, после чего отдельно протестировали их совместимость с новой версией системы. Такой сценарий позволил завершить обновление без потери данных и вернуть сайту стабильную работу.

Проверили сайт после обновления

Когда обновление было завершено, мы протестировали формы обратной связи, вывод страниц и документов, работу меню, сниппетов и шаблонов, состояние логов, кэш и панель администратора. Затем повторно проверили обновлённые компоненты и убедились, что сайт работает стабильно, а система не даёт новых ошибок.

Результаты проекта

В этом проекте ключевой результат был связан со стабильной работой сайта. Мы восстановили отправку заявок, устранили критическую ошибку при обновлении MODX, обновили CMS и проверили основные сценарии работы сайта после технических изменений.

Восстановили отправку заявок

Формы обратной связи снова начали корректно передавать обращения на email клиента. Мы нашли ошибки в настройках FormIt и почтового транспорта, исправили параметры SMTP/PHPMailer и проверили отправку тестовых заявок.

Устранили критическую 500 ошибку

Во время обновления сайт начал отдавать 500 Internal Server Error на странице /setup/. Мы остановили рискованный сценарий, провели диагностику ядра MODX и восстановили корректную работу системы через безопасное обновление.

Обновили MODX до версии 2.8.8-pl

CMS была обновлена пошагово: с проверкой файлов ядра, системных библиотек и ключевых компонентов. Такой подход позволил сохранить структуру сайта, документы, шаблоны и рабочие настройки.

Подготовили сайт к стабильной работе

После обновления мы проверили формы, меню, страницы, шаблоны, сниппеты, кэш, логи и панель администратора. Сайт продолжил работать стабильно, без новых критических ошибок после обновления.