Как обновить PHP на MODX: безопасная инструкция
Большая мензурка с синей жидкостью почти до края и рядом малая, наполовину полная, с зелёным шариком на уровне

Как обновить PHP на MODX: безопасная инструкция

Обновите PHP на сайте MODX без простоев: сделайте бэкап, проверьте дополнения, переключите версию на хостинге и протестируйте сайт на ошибки.

Как обновить PHP на сайте MODX без простоев и ошибок

Чтобы обновить PHP на MODX, сначала сделайте резервную копию и проверьте совместимость версии MODX и дополнений на тестовой копии сайта. Затем переключите PHP в панели хостинга и проверьте журнал ошибок.

Порядок действий: бэкап → тестовая копия → обновление MODX и дополнений → смена версии PHP → проверка → мониторинг.

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

Зачем вообще обновлять PHP

Каждая ветка PHP получает исправления только ограниченное время. Например, PHP 7.4 официально снят с поддержки в ноябре 2022 года: уязвимости в нём больше не закрываются, а значит, сайт на этой версии остаётся лёгкой целью для взлома. Актуальные сроки поддержки каждой ветки публикуются на официальном сайте PHP.

Вторая причина — требования окружения. Хостинги постепенно отключают старые версии, а свежие релизы дополнений вроде pdoTools, miniShop2 или FormIt выходят уже с расчётом на PHP 8. Если откладывать обновление годами, в какой-то момент придётся обновлять всё сразу и в аварийном режиме, когда хостинг отключит старую версию без предупреждения.

Третья причина — скорость. Современные версии PHP заметно быстрее обрабатывают запросы и экономят память. Быстрый ответ сервера улучшает пользовательские метрики, которые учитывают в оценке сайта и Яндекс, и Google.

Что даёт актуальная версия PHP на сайте MODX

  1. 01

    Закрытые уязвимости: сайт получает исправления безопасности, а не работает на «брошенной» ветке.

  2. 02

    Выше скорость: меньше время ответа сервера и нагрузка на процессор при том же трафике.

  3. 03

    Совместимость с новыми дополнениями: можно ставить свежие версии pdoTools, MIGX, FormIt, miniShop2.

  4. 04

    Меньше риска внезапных отключений: хостинг не заставит срочно переезжать на новую версию.

  5. 05

    Чище код: исчезают предупреждения Deprecated, которые раздувают журнал ошибок.

Сначала выясните, с чем работаете

Перед любыми изменениями зафиксируйте текущее состояние. Откройте админку MODX и перейдите в раздел «Отчёты» → «Информация о системе»: там указаны версия MODX, версия PHP, лимит памяти и подключённые расширения. Список установленных дополнений и их версий смотрите в «Управлении пакетами» (Установщик).

Запишите эти данные: они понадобятся, чтобы сверить требования и при необходимости вернуть всё как было. Заодно оцените, сколько на сайте самописного кода — сниппетов, плагинов и модулей, созданных под заказ. Именно он чаще всего ломается при переходе на PHP 8, потому что у дополнений из официального каталога обычно есть обновления, а у кода десятилетней давности автора может не быть.

было / риск

Устаревшая связка

  • MODX 2.6–2.7 или давно не обновлявшаяся 2.8
  • PHP 7.x, который уже не получает исправлений
  • Дополнения не обновлялись годами
  • Сниппеты с функциями, удалёнными в PHP 8
стало / цель

Актуальная связка

  • Свежий релиз MODX своей ветки: 2.8.x или 3.x
  • PHP 8.x, поддерживаемый разработчиками языка
  • Дополнения обновлены до совместимых версий
  • Собственный код проверен и исправлен

Конкретную версию PHP подбирайте по таблице требований вашей версии MODX и каждого дополнения.

Бэкап и тестовая копия — обязательны

Резервная копия состоит из двух частей: всех файлов сайта (папки core, manager, connectors, assets и файлы в корне) и дампа базы данных. Дамп можно выгрузить через phpMyAdmin или Adminer, а на VPS — командой mysqldump. Обязательно проверьте, что архив открывается, а дамп не пустой: бэкап, который нельзя развернуть, бэкапом не является.

Затем разверните копию сайта на тестовом поддомене. Для этого скопируйте файлы, импортируйте базу и поправьте пути и параметры подключения к БД в файлах core/config/config.inc.php и config.core.php, а также в конфигурационных файлах папок manager и connectors. Важный момент для SEO: тестовый поддомен нужно закрыть паролем (например, через .htpasswd) или хотя бы запретить индексацию. Иначе Яндекс и Google могут проиндексировать дубль всего сайта.

Пошаговый план обновления PHP на MODX

  1. 01

    Зафиксируйте текущее состояние: версии MODX и PHP, список установленных дополнений, лимит памяти и подключённые расширения.

  2. 02

    Сделайте полный бэкап файлов и базы данных и проверьте, что копию можно развернуть.

  3. 03

    Создайте тестовую копию сайта на отдельном поддомене и закройте её от индексации и посторонних посетителей.

  4. 04

    Обновите MODX до последней стабильной версии своей ветки, а затем дополнения: pdoTools, MIGX, FormIt, miniShop2 и другие, которые у вас установлены.

  5. 05

    Переключите PHP на тестовой копии на целевую версию, очистите кэш и включите вывод ошибок.

  6. 06

    Пройдите по ключевым сценариям: главная, каталог, формы, корзина, поиск, вход в админку, импорт и cron-задачи.

  7. 07

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

  8. 08

    Переключите версию PHP на боевом сайте в период минимальной посещаемости, очистите кэш и повторите проверку.

  9. 09

    Следите за журналами и отчётами поисковых систем минимум неделю и при критичных проблемах откатитесь на прежнюю версию.

Как переключить версию PHP на хостинге

На виртуальном хостинге версия PHP меняется в панели управления: ISPmanager, cPanel, Plesk или собственной панели провайдера. Обычно нужный пункт называется «PHP» или «Версия PHP» и находится в настройках сайта или домена. Обратите внимание на режим работы (mod_php, FastCGI, PHP-FPM): у разных режимов могут быть свои ограничения.

Сразу после смены проверьте расширения. Для MODX нужны как минимум pdo_mysql, curl, mbstring, xml, json и zip, а для работы с изображениями — gd или imagick. Для скорости стоит включить opcache. Лимит памяти (memory_limit) лучше выставить не ниже 256 МБ, особенно если на сайте магазин или тяжёлые сниппеты.

Учтите, что у каждой версии PHP на хостинге может быть собственный php.ini, и настройки старой версии автоматически не переносятся. На VPS процедура другая: ставится нужный пакет php-fpm, а в конфигурации nginx или Apache меняется путь к сокету. После этого службы перезапускаются.

СимптомВероятная причинаЧто делать
Белый экран или ошибка 500Фатальная ошибка PHP в сниппете, плагине или дополненииОткрыть журнал ошибок MODX, найти файл и строку, исправить или заменить компонент
Call to undefined function each() или create_function()Функции удалены из языка в PHP 8.0, старый код их используетПереписать на цикл foreach и анонимные функции
Журнал быстро заполняется сообщениями DeprecatedУстаревший синтаксис в старых дополнениях и шаблонахОбновить дополнение, а в собственном коде исправить сигнатуры функций
Ошибки вроде Unsupported operand types или count() для nullPHP 8 строже относится к типам данныхПриводить значения к нужному типу и проверять переменные на null и массив
Не создаются превью картинокНе включено расширение gd или imagick, либо не хватает memory_limitВключить расширение и увеличить лимит памяти
Не уходят письма и заявки с формУстарел FormIt или изменились настройки почты и SMTPОбновить FormIt и проверить параметры отправки писем

Где искать причину ошибки

Главный инструмент диагностики — журнал ошибок. В админке MODX он находится в разделе «Отчёты» → «Журнал ошибок», а физически это файл core/cache/logs/error.log. Если после смены версии не открывается даже админка, смотрите логи самого хостинга: они обычно доступны в панели управления.

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

После каждого исправления очищайте кэш: удалите содержимое папки core/cache или воспользуйтесь командой очистки в админке. Иначе MODX может продолжить отдавать старые скомпилированные данные, и вы будете искать ошибку, которой уже нет.

Чек-лист после переключения PHP

01

Главная и 3–4 типовые страницы открываются с кодом 200

02

Админка: вход, редактирование и сохранение ресурса

03

Формы обратной связи отправляют письма и заявки

04

Корзина и оформление заказа (например, miniShop2)

05

Поиск, фильтры и пагинация работают как раньше

06

ЧПУ, редиректы, robots.txt и sitemap.xml отдаются корректно

07

Превью изображений создаются, файлы загружаются

08

Cron-задачи, импорт и интеграции с учётными системами

Что делать с самописным кодом

Если журнал ошибок показывает проблемы в собственных сниппетах, не пытайтесь «заглушить» их подавлением ошибок через символ @ или отключением отчётов. Исправляйте причину: заменяйте удалённые функции, добавляйте проверки на null, приводите типы. Чаще всего правки занимают несколько строк.

Если код написан давно и никто не помнит, как он работает, лучше сначала описать его назначение, а потом решить, нужен ли он вообще. Часто функциональность старого сниппета сегодня закрывается штатными возможностями pdoTools или современными дополнениями, и вместо правок проще перейти на готовое решение.

Типичные ошибки при обновлении PHP на MODX

Большинство аварий происходит не из-за самой смены версии, а из-за спешки и отсутствия подготовки.

Как делают неправильно

  • Переключают PHP сразу на боевом сайте без бэкапа и тестовой копии.
  • Прыгают через несколько версий PHP, не обновив MODX и дополнения.
  • Оставляют display_errors включённым на рабочем сайте.
  • Не проверяют формы, заказы и cron после смены версии.
  • Забывают очистить кэш и проверяют сайт на устаревших данных.

Как правильно

  1. 01

    Сначала бэкап и тестовый поддомен, закрытый от индексации.

  2. 02

    Обновляйте по цепочке: MODX, дополнения, затем PHP.

  3. 03

    Ошибки показывайте только на стенде, а на боевом пишите в лог.

  4. 04

    Пройдите чек-лист сценариев: формы, корзина, поиск, импорт.

  5. 05

    После каждого изменения очищайте кэш и смотрите журнал ошибок.

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

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

Смотрите на отчёты поисковых систем. В Яндекс Вебмастере проверяйте раздел с диагностикой сайта и статистикой обхода, в Google Search Console — отчёты о сканировании и индексировании страниц. Рост числа ответов 5xx или недоступных страниц — прямой сигнал, что после обновления что-то сломалось. В Яндекс Метрике и Google Analytics следите за резким падением конверсий и ростом отказов на ключевых страницах.

Что мониторить первые 7 дней

01 / поисковики

Ответы 5xx и недоступность

Яндекс Вебмастер и Google Search Console: диагностика, статистика обхода и сканирования.

02 / журнал

Ошибки MODX и PHP

Новые записи в журнале ошибок после каждого посещения редких страниц и cron-задач.

03 / бизнес

Конверсии и заявки

Яндекс Метрика и Google Analytics: цели, заказы, отправка форм по сравнению с прошлой неделей.

04 / скорость

Время ответа сервера

Сравните скорость загрузки ключевых страниц до и после смены версии PHP.

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

Итоги: как обновить PHP на MODX безопасно

Безопасное обновление PHP — это не переключатель на хостинге, а процесс: бэкап, тестовая копия, совместимость, проверка и мониторинг.
  1. 01

    Узнайте версии MODX, PHP и дополнений в разделе «Информация о системе».

  2. 02

    Сделайте проверенный бэкап файлов и базы данных.

  3. 03

    Отработайте обновление на закрытой от индексации тестовой копии.

  4. 04

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

  5. 05

    После смены версии проверьте сценарии и неделю следите за логами, Яндекс Вебмастером и Google Search Console.

Если сайт сложный, с магазином, интеграциями и самописными модулями, лучше доверить обновление специалисту: так вы сэкономите время и не потеряете заказы из-за простоя.

Часто задаваемые вопросы

Доверьте обновление PHP на MODX специалистам без риска для сайта

Проверим совместимость, сделаем бэкап, обновим PHP на тестовой копии и перенесём изменения без простоев

Бесплатный аудитОбновление без простоевГарантия отката

Сначала бэкап, потом любые изменения

Политика конфиденциальности

При оставлении заявки на ресурсе «https://gurucontext.ru» пользователи предоставляют следующие сведения:

  • Имя
  • Контактный телефон или Telegram
  • Адрес сайта пользователя (не обязательно)

Также администрация сайта получает данные об IP-адресе посетителей, типе браузера, времени нахождения на сайте и прочие подобные сведения через сервисы статистики.

Использование информации

Вся полученная информация используется администрацией «https://gurucontext.ru» исключительно в целях связи с клиентом.

Защита персональных данных

Компания «https://gurucontext.ru» обязуется не разглашать сведения, полученные от пользователей, и хранит их в защищённом виде.

Предоставление данных третьим лицам

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

Контакты

Телефон: +7 (499) 955-47-00.
E-mail: info@gurucontext.ru.