Переезд сайта на MODX Revolution: почему опять всё никак у других

Переезд сайта на MODX Revolution: почему опять всё никак у других

Перенос сайта на другой аккаунт хостинга — задача рутинная. Но если ваш проект работает на MODX Revolution, стандартный сценарий «перекинул файлы и базу — поменял конфиг» превращается в увлекательный квест с возможными ошибками.

Вчера я переносил проект на Beget и собрал полный чек-лист «граблей», на которые наступает каждый второй. Да, конечно, можно было написать в техподдержку и попросить перенести, но если вы не из тех, кто идёт простым путём делюсь пошаговым алгоритмом.

Шаг 1. Конфиги-матрешки

В MODX данные базы данных и пути «рассыпаны» по четырем файлам. Если пропустить хоть один — админка или коннекторы отвалятся.

Где искать:

  1. core/config/config.inc.php — основной файл.
  2. /config.core.php — в корне.
  3. /manager/config.core.php — для админки.
  4. /connectors/config.core.php — для процессоров.

Главный нюанс: В config.inc.php недостаточно поменять $database_user и $dbase. Есть коварная строка $database_dsn. Если в ней останется старое имя базы, сайт будет выдавать ошибку подключения, игнорируя остальные переменные.

Шаг 2. Конфликт версий PHP и Composer

При переезде на новый сервер можно поймать ошибку типа:

Composer detected issues in your platform: Your Composer dependencies require a PHP version ">= 7.2.5".

Это значит, что на новом хостинге по умолчанию стоит старая версия PHP. В панели Beget это лечится в один клик в настройках сайта. Оптимально ставить 7.4 или 8.1 (если сборка свежая). После смены версии обязательно удаляйте папку core/cache — MODX «памятливый» и может хранить старое окружение в файлах.

Шаг 3. Смена домена: когда база помнит бывшую

Если при переезде меняется и домен, MODX продолжит редиректить вас на старый адрес. Он записывает домен в таблицы настроек.

Что делать: Идем в phpMyAdmin и выполняем SQL-запросы (замените префиксы и домены на свои):

-- Обновляем системные настройки
UPDATE modx_system_settings SET value = REPLACE(value, 'old-domain.ru', 'new-domain.ru');
-- Обновляем настройки контекста (site_url и http_host)
UPDATE modx_context_setting SET value = REPLACE(value, 'old-domain.ru', 'new-domain.ru');

Шаг 4. Права доступа (Permissions)

Для Beget (где работает suEXEC) стандартные права 755 на папки и 644 на файлы — это идеал. Если сайт «белеет» после переноса, проверьте, чтобы у пользователя были права на запись в core/cache.

Итоговый чек-лист «спасения»:

  1. Проверить все 4 конфига на наличие старых путей (вида /home/u/old-user/...).
  2. Исправить строку $database_dsn в config.inc.php.
  3. Выставить актуальную версию PHP в панели хостинга.
  4. Снести папку core/cache под корень (лучшее лекарство).
  5. Прогнать SQL-запросы на замену домена в базе.

Вывод: MODX — система надежная, но очень чувствительная к абсолютным путям.

Если нужны услуги по веб-разработке - обращайтесь в лс 🙂