
Как обновить PHP на MODX: безопасная инструкция
Обновите PHP на сайте MODX без простоев: сделайте бэкап, проверьте дополнения, переключите версию на хостинге и протестируйте сайт на ошибки.
Как обновить PHP на сайте MODX без простоев и ошибок
Чтобы обновить PHP на MODX, сначала сделайте резервную копию и проверьте совместимость версии MODX и дополнений на тестовой копии сайта. Затем переключите PHP в панели хостинга и проверьте журнал ошибок.
Смена версии PHP кажется мелочью: в панели хостинга это один выпадающий список. Но сайт на MODX состоит из ядра, десятков дополнений и самописных сниппетов, и любой из них может оказаться несовместимым с новой версией. В статье разобрано, как подготовиться, в каком порядке действовать, какие ошибки возникают чаще всего и как их исправить.
Зачем вообще обновлять PHP
Каждая ветка PHP получает исправления только ограниченное время. Например, PHP 7.4 официально снят с поддержки в ноябре 2022 года: уязвимости в нём больше не закрываются, а значит, сайт на этой версии остаётся лёгкой целью для взлома. Актуальные сроки поддержки каждой ветки публикуются на официальном сайте PHP.
Вторая причина — требования окружения. Хостинги постепенно отключают старые версии, а свежие релизы дополнений вроде pdoTools, miniShop2 или FormIt выходят уже с расчётом на PHP 8. Если откладывать обновление годами, в какой-то момент придётся обновлять всё сразу и в аварийном режиме, когда хостинг отключит старую версию без предупреждения.
Третья причина — скорость. Современные версии PHP заметно быстрее обрабатывают запросы и экономят память. Быстрый ответ сервера улучшает пользовательские метрики, которые учитывают в оценке сайта и Яндекс, и Google.
Что даёт актуальная версия PHP на сайте MODX
- 01
Закрытые уязвимости: сайт получает исправления безопасности, а не работает на «брошенной» ветке.
- 02
Выше скорость: меньше время ответа сервера и нагрузка на процессор при том же трафике.
- 03
Совместимость с новыми дополнениями: можно ставить свежие версии pdoTools, MIGX, FormIt, miniShop2.
- 04
Меньше риска внезапных отключений: хостинг не заставит срочно переезжать на новую версию.
- 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
- 01
Зафиксируйте текущее состояние: версии MODX и PHP, список установленных дополнений, лимит памяти и подключённые расширения.
- 02
Сделайте полный бэкап файлов и базы данных и проверьте, что копию можно развернуть.
- 03
Создайте тестовую копию сайта на отдельном поддомене и закройте её от индексации и посторонних посетителей.
- 04
Обновите MODX до последней стабильной версии своей ветки, а затем дополнения: pdoTools, MIGX, FormIt, miniShop2 и другие, которые у вас установлены.
- 05
Переключите PHP на тестовой копии на целевую версию, очистите кэш и включите вывод ошибок.
- 06
Пройдите по ключевым сценариям: главная, каталог, формы, корзина, поиск, вход в админку, импорт и cron-задачи.
- 07
Исправьте найденные ошибки в самописных сниппетах, плагинах и шаблонах или замените устаревшие дополнения.
- 08
Переключите версию PHP на боевом сайте в период минимальной посещаемости, очистите кэш и повторите проверку.
- 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() для null | PHP 8 строже относится к типам данных | Приводить значения к нужному типу и проверять переменные на null и массив |
| Не создаются превью картинок | Не включено расширение gd или imagick, либо не хватает memory_limit | Включить расширение и увеличить лимит памяти |
| Не уходят письма и заявки с форм | Устарел FormIt или изменились настройки почты и SMTP | Обновить FormIt и проверить параметры отправки писем |
Где искать причину ошибки
Главный инструмент диагностики — журнал ошибок. В админке MODX он находится в разделе «Отчёты» → «Журнал ошибок», а физически это файл core/cache/logs/error.log. Если после смены версии не открывается даже админка, смотрите логи самого хостинга: они обычно доступны в панели управления.
На тестовой копии включите display_errors в настройках PHP, чтобы видеть ошибки сразу в браузере. На боевом сайте этого делать нельзя: пользователи не должны видеть пути к файлам и тексты ошибок, а поисковые роботы — индексировать их.
После каждого исправления очищайте кэш: удалите содержимое папки core/cache или воспользуйтесь командой очистки в админке. Иначе MODX может продолжить отдавать старые скомпилированные данные, и вы будете искать ошибку, которой уже нет.
Чек-лист после переключения PHP
Главная и 3–4 типовые страницы открываются с кодом 200
Админка: вход, редактирование и сохранение ресурса
Формы обратной связи отправляют письма и заявки
Корзина и оформление заказа (например, miniShop2)
Поиск, фильтры и пагинация работают как раньше
ЧПУ, редиректы, robots.txt и sitemap.xml отдаются корректно
Превью изображений создаются, файлы загружаются
Cron-задачи, импорт и интеграции с учётными системами
Что делать с самописным кодом
Если журнал ошибок показывает проблемы в собственных сниппетах, не пытайтесь «заглушить» их подавлением ошибок через символ @ или отключением отчётов. Исправляйте причину: заменяйте удалённые функции, добавляйте проверки на null, приводите типы. Чаще всего правки занимают несколько строк.
Если код написан давно и никто не помнит, как он работает, лучше сначала описать его назначение, а потом решить, нужен ли он вообще. Часто функциональность старого сниппета сегодня закрывается штатными возможностями pdoTools или современными дополнениями, и вместо правок проще перейти на готовое решение.
Типичные ошибки при обновлении PHP на MODX
Как делают неправильно
- Переключают PHP сразу на боевом сайте без бэкапа и тестовой копии.
- Прыгают через несколько версий PHP, не обновив MODX и дополнения.
- Оставляют display_errors включённым на рабочем сайте.
- Не проверяют формы, заказы и cron после смены версии.
- Забывают очистить кэш и проверяют сайт на устаревших данных.
Как правильно
- 01
Сначала бэкап и тестовый поддомен, закрытый от индексации.
- 02
Обновляйте по цепочке: MODX, дополнения, затем PHP.
- 03
Ошибки показывайте только на стенде, а на боевом пишите в лог.
- 04
Пройдите чек-лист сценариев: формы, корзина, поиск, импорт.
- 05
После каждого изменения очищайте кэш и смотрите журнал ошибок.
Контроль после обновления
Сайт открылся и выглядит как прежде — это ещё не финал. Некоторые ошибки проявляются только на редких страницах или в определённое время, например при ночном импорте или при отправке редкой формы. Поэтому первую неделю после переключения стоит наблюдать за сайтом.
Смотрите на отчёты поисковых систем. В Яндекс Вебмастере проверяйте раздел с диагностикой сайта и статистикой обхода, в Google Search Console — отчёты о сканировании и индексировании страниц. Рост числа ответов 5xx или недоступных страниц — прямой сигнал, что после обновления что-то сломалось. В Яндекс Метрике и Google Analytics следите за резким падением конверсий и ростом отказов на ключевых страницах.
Что мониторить первые 7 дней
Ответы 5xx и недоступность
Яндекс Вебмастер и Google Search Console: диагностика, статистика обхода и сканирования.
Ошибки MODX и PHP
Новые записи в журнале ошибок после каждого посещения редких страниц и cron-задач.
Конверсии и заявки
Яндекс Метрика и Google Analytics: цели, заказы, отправка форм по сравнению с прошлой неделей.
Время ответа сервера
Сравните скорость загрузки ключевых страниц до и после смены версии PHP.
Итоги: как обновить PHP на MODX безопасно
- 01
Узнайте версии MODX, PHP и дополнений в разделе «Информация о системе».
- 02
Сделайте проверенный бэкап файлов и базы данных.
- 03
Отработайте обновление на закрытой от индексации тестовой копии.
- 04
Обновите MODX и дополнения, исправьте самописный код и только затем переключайте PHP.
- 05
После смены версии проверьте сценарии и неделю следите за логами, Яндекс Вебмастером и Google Search Console.
Если сайт сложный, с магазином, интеграциями и самописными модулями, лучше доверить обновление специалисту: так вы сэкономите время и не потеряете заказы из-за простоя.
Часто задаваемые вопросы
Ту, которую официально поддерживают ваша версия MODX и все установленные дополнения. Для актуальных релизов MODX Revolution это ветка PHP 8.x. Точные требования смотрите в документации к своей версии системы и в описании каждого дополнения.
Только в пределах версий, которые поддерживает ваша сборка. Старые релизы MODX 2.x рассчитаны на PHP 5.x–7.x и на PHP 8 работают с ошибками. В этом случае сначала обновляют MODX и дополнения, затем PHP.
Верните прежнюю версию PHP в панели хостинга, очистите кэш (содержимое папки core/cache) и откройте журнал ошибок MODX. Текст ошибки покажет файл и строку, где код несовместим с новой версией.
Косвенно. Быстрый и стабильный ответ сервера улучшает пользовательские метрики, а ошибки 5xx мешают обходу страниц роботами Яндекса и Google. Поэтому после смены версии следите за Яндекс Вебмастером и Google Search Console.
Для небольшого сайта на актуальной версии MODX это один-два часа вместе с тестами. Если сайт старый, с самописными сниппетами и магазином, закладывайте от одного до нескольких рабочих дней на доработку кода.
Доверьте обновление PHP на MODX специалистам без риска для сайта
Проверим совместимость, сделаем бэкап, обновим PHP на тестовой копии и перенесём изменения без простоев
Спасибо за заявку!
Мы свяжемся с вами в ближайшее время.
Сначала бэкап, потом любые изменения

