Обновление 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 рабочих дней. Это ориентир для описанного объёма работ. Для другого сайта срок зависит от количества пользовательских доработок, совместимости расширений и объёма проверки после обновления.
