
- MODX 2
- MODX 3
- PHP 7.4
- PHP 8.1


Расширяемый раннер и генератор миграций для MODX Revolution 2 и 3. Пакет применяет PHP-миграции в предсказуемом порядке, записывает результат в журнал и останавливает прогон, если уже применённый файл изменился или новая миграция оказалась в прошлом.
У пакета нет страницы в менеджере: миграции запускаются из консоли во время деплоя или вручную разработчиком. После установки достаточно указать, где лежат MODX и каталог миграций. Таблицу с историей запусков пакет создаст сам при первой команде.
GET_LOCK не даёт двум процессам одновременно менять одну базу — даже если они запущены с разных серверов.Пакет выходит двумя линиями. Общее ядро, команды, конфиг и формат журнала у них одинаковые; различаются загрузка MODX, тип класса $modx и шаблон создания таблиц из модели. Мажорная версия пакета означает платформу.
| MODX 2 | MODX 3 | |
|---|---|---|
| Версия пакета | 1.x | 2.x |
| MODX Revolution | 2.6–2.8 | 3.0+ |
| PHP | 7.4+ | 8.1+ |
| Класс MODX | modX | MODX\Revolution\modX |
| Модель xPDO | старый пакет и классы | PSR-4 namespace и FQCN |
Обе линии работают с MySQL или MariaDB и запускаются только через PHP CLI.
mxMigrations можно использовать на shared-хостинге, если тариф предоставляет:
ALTER, CREATE, DROP, INSERT или UPDATE;GET_LOCK, которой пакет защищает базу от параллельных запусков.Веб-страницы для запуска нет. Если хостинг не разрешает PHP CLI, использовать пакет штатным способом не получится.
Современные миграции выполняются внутри процесса mxMigrations и не требуют proc_open. Эта функция нужна только для старых автономных PHP-файлов, которые сами загружают MODX. На хостинге с отключённым proc_open новые миграции будут работать, а legacy-файлы — нет.
Для new --apply пользователь CLI должен иметь право записи в каталог миграций. Это ограничение можно обойти без потери возможностей запуска: генерировать файлы локально и загружать их на хостинг вместе с кодом.
Установите transport-пакет через Пакеты → Установить пакет в менеджере MODX:
После установки исполняемый файл находится по адресу:
core/components/mxmigrations/bin/mxmigrations.phpУстановка сама по себе не меняет сайт: пакет только добавляет CLI и его библиотеки. Таблица истории появится автоматически после создания конфига и первой команды status. Подключение описано в разделе Быстрый старт.
PHP-конфиг проекта
↓
каталог миграций → план: pending / applied / drifted / missing / outOfOrder
↓
MySQL-блокировка → последовательное выполнение → журнал проектаОбычный безопасный цикл деплоя:
status --strict проверяет состояние и возвращает ненулевой код, если есть неприменённые миграции или нарушения.up --dry-run показывает очередь без выполнения и без записи в журнал.up захватывает блокировку и применяет файлы по одному.status --strict подтверждает чистое состояние.Раннер не откатывает миграции
В MySQL многие DDL-операции не транзакционны, а удалённые данные автоматически не восстановить. Для обратного изменения создавайте новую миграцию и делайте резервную копию перед опасными операциями.