Обновление MODX Evolution до версии 1.4.7 и адаптация сайта для работы на современных версиях PHP (7.2 и выше)

MODX Evolution · PHP · Обновление и совместимость

Обновление сайта до MODX Evolution 1.4.7 с адаптацией пользовательского кода под PHP 7.2. Основная задача — сохранить работу сайта, административной панели, форм и интеграций после смены версии CMS и PHP.

Задача обновления

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

Сохранить функциональность

Проверить, что формы, отправка почты, административная панель и пользовательские доработки продолжают работать после обновления.

Адаптировать код

Обновить обращения к базе данных, обработку типов и участки кода с устаревшими функциями PHP.

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

Как проходила работа

1. Подготовка

Создание резервной копии файлов и базы данных. Проверка версии PHP, конфигурации сайта, используемых плагинов и пользовательских компонентов.

2. Обновление CMS

Установка MODX Evolution 1.4.7 и проверка настроек. Перенос пользовательской конфигурации и обновление компонентов сайта.

3. Доработка расширений

Адаптация сниппетов и плагинов. Несовместимые компоненты требовали исправления кода либо замены на подходящую версию.

4. Проверка интерфейса

Проверка JavaScript, библиотек jQuery и связанных плагинов. При необходимости — корректировка CSS и поведения элементов страниц.

Какие изменения потребовались в PHP-коде

Подключение к базе данных

В пользовательском коде вызовы mysql_* заменялись на mysqli_* или PDO. Ниже — пример изменения подключения из исходного описания работ.

До изменения

$this->conn = mysql_connect($host, $user, $password);
mysql_select_db($database, $this->conn);

После изменения

$this->conn = mysqli_connect(
    $host,
    $user,
    $password,
    $database
);

Этот фрагмент показывает замену подключения. Остальные обращения к базе проверяются вместе с ним.

Проверка данных перед count()

В исходном коде встречались вызовы count() для значений неподходящего типа. В местах, где по логике ожидался массив, добавлялась проверка:

if (is_array($variable) && count($variable) > 0) {
    // Обработка непустого массива
}

Также исправлялись обращения, вызывавшие сообщение Use of undefined constant. Проверки типов подбирались под назначение конкретного участка кода.

Замена устаревших функций

В сниппетах и плагинах проверялись вызовы create_function, split и ereg. Их заменяли соответствующими конструкциями: анонимными функциями и подходящими средствами обработки строк и регулярных выражений.

Настройки и кэширование

Пользовательские настройки переносились в конфигурационные файлы. Отдельно проверялись структура кэша и работа кэширования после обновления.

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

Что проверяли после обновления

Пользовательские сценарии

  • Отправку форм.
  • Работу почтовых уведомлений.
  • Пользовательские сниппеты и доработки.
  • Поведение интерфейса и JavaScript.

Работу CMS

  • Административную панель.
  • Совместимость плагинов.
  • Настройки и кэширование.
  • Ошибки, обнаруженные после смены окружения.

Сроки и результат

В исходной оценке на работу отводилось 5–7 рабочих дней. Срок зависел от объёма пользовательского кода и совместимости плагинов.

Результат, описанный в проекте, — сайт на MODX Evolution 1.4.7 с адаптированными сниппетами и плагинами, исправленными участками устаревшего PHP-кода и проверенными основными функциями.

При подобном обновлении важно оценивать весь состав сайта: ядро CMS, расширения, собственный код и серверное окружение.

Частые вопросы об обновлении MODX Evolution

Достаточно ли обновить только ядро MODX Evolution?

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

Означает ли адаптация под PHP 7.2 совместимость со всеми последующими версиями?

Нет. Статья описывает конкретную задачу обновления до MODX Evolution 1.4.7 и адаптации под PHP 7.2. Для другой версии PHP нужно отдельно проверить ядро, расширения и собственные доработки.

Можно ли сохранить пользовательские сниппеты и плагины?

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

Какие ошибки PHP исправлялись в этом проекте?

В исходном описании указаны замена вызовов mysql_*, проверка данных перед count(), исправление обращений с сообщением Use of undefined constant и замена устаревших create_function, split и ereg. Конкретные изменения зависели от кода компонента.

Зачем перед обновлением делать резервную копию?

Копия файлов и базы данных сохраняет исходное состояние сайта до изменений. В описанном проекте резервное копирование входило в подготовительный этап вместе с проверкой окружения и списка расширений.

Сколько занимает такое обновление?

В исходной оценке проекта указано 5–7 рабочих дней. Это ориентир для описанного объёма работ. Для другого сайта срок зависит от количества пользовательских доработок, совместимости расширений и объёма проверки после обновления.


Давайте обсудим проект

Расскажите, что хотите сделать. Я отвечу на вашу почту.

Или напишите в Telegram @ifwcom