Сайт на Joomla 3 сегодня — как старый автомобиль: вроде ездит, но техосмотр давно не пройден. Официальная поддержка прекратилась 1 августа 2023 года, и каждая новая уязвимость делает проект всё более лёгкой добычей. По опыту аудитов: на старых версиях Joomla десятки попыток взлома через заброшенные плагины фиксируются ежедневно. Миграция на Joomla 5 — не просто обновление, а переход на принципиально иную архитектуру: требуется 64-разрядный сервер, PHP минимум 8.1 и полное расставание с унаследованным jQuery 1.x. Но паниковать не стоит: если действовать по плану, сайт переедет без потери контента, пользователей и позиций. В этом руководстве только практика — от «подушки безопасности» до финальной синхронизации на боевом сервере.
Почему нельзя ждать: риски работы на Joomla 3 в 2026 году
Работающий сайт усыпляет бдительность: «Клиенты видят, заказы идут, всё в порядке». Но в 2026 году такой подход превращает проект в заминированное поле. Давайте по пунктам разберём, чем вам грозит промедление.
1. Угроза безопасности и отсутствие обновлений
Ядро Joomla 3 больше не получает патчей безопасности. Если появляется новая уязвимость (а их находят регулярно), ваш сайт остаётся беззащитным. Joomla 5 же имеет встроенные механизмы защиты: фильтрация XSS, защита от SQL-инъекций и брутфорс-атак.
Статистика инцидентов: По отчётам хостинг-провайдеров и центров безопасности, более 60% взломов сайтов на CMS в 2024–2025 годах пришлись на устаревшие версии Joomla 3. Роботы хакеров сканируют сеть автоматически и «забираются» через публично известные дыры в старых плагинах и ядре, получая доступ к админке и файловой системе. На WordPress ситуация похожая, но там автообновления ядра хоть как-то страхуют, а здесь вы полностью на ручном управлении.
2. Несовместимость с современным PHP и серверами
Joomla 3 разрабатывалась для PHP 5.6 и 7.x. Сегодня же большинство хостингов (особенно на Ubuntu 22.04/24.04 или Debian 12) по умолчанию предлагают PHP 8.1 или 8.2. При попытке запустить старую Joomla на новом PHP вы получите критические ошибки: «Deprecated function», «Syntax error» — и сайт уйдёт в белый экран.
Можно, конечно, попросить техподдержку оставить старую версию PHP, но это ослабляет защиту сервера и создаёт конфликты с другими проектами. Я не раз наблюдал, как на одном виртуальном хостинге висит современный интернет-магазин на PHP 8.2 и рядом старенький сайт на PHP 7.4 — компромисс, который долго не протянет: хостеры, например Beget и Timeweb, уже предупреждают о скором отключении устаревших версий.
3. Отказ от старых технологий (jQuery 1.x)
Joomla 3 крепко держалась за jQuery 1.x. В Joomla 5 (и уже в 4-й) ядро перешло на jQuery 3.x и нативный JavaScript. Это значит, что любой плагин или модуль, который не обновлялся с 2018–2019 годов, просто сломает верстку или полностью остановит скрипты. Будете видеть ошибки в консоли браузера и частично работающие страницы.
4. SEO и производительность
Joomla 5 «из коробки» даёт инструменты, которых не хватало в тройке:
- Lazy Loading — изображения и скрипты загружаются по мере прокрутки, ускоряя First Contentful Paint.
- Встроенная минификация CSS/JS — система сама объединяет и сжимает файлы, снижая нагрузку на сервер.
- Поддержка HTTP/2 и HTTP/3 — новые версии ядра быстрее работают с современными протоколами, что напрямую влияет на баллы в Google PageSpeed.
На практике даже без оптимизации код Joomla 5 по сравнению с той же 3-й версией даёт прирост в PageSpeed Insights на 15–20 пунктов. Для коммерческих проектов, где скорость конверсии зависит от секунд загрузки, это существенно.
Чек-лист: Ваш сайт на Joomla 3 в опасности, если:
- ✅ Вы не обновляли плагины более двух лет.
- ✅ Хостинг требует PHP 8.1+.
- ✅ Используются темы или модули из непроверенных источников.
- ✅ Google Search Console показывает ошибки «Небезопасный контент» или «Устаревшие технологии».
Если хоть один пункт совпадает — приступайте к миграции без промедления.
Подготовка к миграции: Стратегия «Безопасный старт»
Миграция на живом сайте, который принимает заказы, — авантюра. Правильный путь: копия проекта, тестовый полигон, проверка, и только потом замена на основном домене. Такой подход работает для любой CMS, будь то Joomla, WordPress или даже сложный кастомный движок.
Шаг 1. Аудит текущего сайта
Первое — инвентаризация. Не надейтесь на память, составьте список расширений. Я обычно открываю «Расширения» → «Управление» и выписываю всё в таблицу, сразу отмечая дату последнего обновления.
Что проверяем:
- Версия ядра: точная цифра (например, 3.10.12).
- Список плагинов и модулей: все до одного.
- Тема оформления: какая используется (Helix, Gantry, ThemePure и т.д.).
- Кастомный код: есть ли ручные вставки PHP/JS в файлах index.php, template.php или внутри плагинов.
- Объём контента: количество статей, пользователей, комментариев.
Плагин Akeeba Backup (если ещё работает на вашей версии) может помочь со списком файлов, но ручной обход надёжнее.
Шаг 2. Создание полной резервной копии
На этом этапе не экономим время. Резервная копия — ваша страховка. В случае сбоя вы должны восстановить сайт за пять минут.
Что копируем: файловую систему (все директории, включая configuration.php) и базу данных — полный дамп SQL.
Как сделать:
- Через панель хостинга: у большинства провайдеров (Beget, Timeweb, Reg.ru) есть пункт «Резервное копирование» — создайте полный архив.
- Плагином: если установлен Akeeba Backup, создайте полный архив и скачайте на компьютер. Akeeba — аналог UpdraftPlus из мира WordPress, только заточен под Joomla, и проверен годами.
- Вручную: скачайте файлы через FTP (FileZilla) и экспортируйте базу через phpMyAdmin: «Экспорт» → «Скачать».
Важно: не храните копию только на сервере. Обязательно заберите её на локальный компьютер или в облако (Google Drive, Dropbox). Если сервер выйдет из строя, вы потеряете всё.
Шаг 3. Подготовка тестового окружения
Тестовый сайт — обязательное условие. Никаких «пронесёт».
Способы создания:
- Локальный сервер: LocalWP, Docker или XAMPP на вашем компьютере. Плюс: быстро и бесплатно, не зависит от хостинга. Минус: нужно настроить PHP 8.1+ и базу вручную. Я предпочитаю LocalWP — он позволяет в пару кликов развернуть нужную версию PHP и создать клон сайта.
- Поддомен на хостинге: test.yoursite.ru. Плюс: окружение максимально похоже на боевое. Минус: расходует ресурсы основного сервера, и есть риск перепутать конфигурацию.
- Специализированные сервисы хостинга: некоторые провайдеры предлагают функцию «Тестовый сайт» прямо в панели.
Настройка тестовой копии:
- Скопируйте файлы из резервной копии в папку поддомена или локального сервера.
- Создайте новую базу данных и импортируйте SQL-файл.
- Отредактируйте configuration.php: пропишите параметры новой базы (host, user, password, db) и временный base_url.
Если сайт открылся — можно двигаться дальше.
Шаг 4. Анализ совместимости плагинов
Самое узкое место миграции. 90% проблем — не в ядре, а в старых расширениях. Плагин, который не обновлялся с 2020 года, почти наверняка не заработает в Joomla 5.
Алгоритм проверки:
- Зайдите в официальный каталог расширений (joomla.org/extensions) или на сайт разработчика.
- Найдите каждый плагин и проверьте наличие версии для Joomla 4/5.
Типичные группы риска:
- Плагины безопасности: старые сборки могут не просто не работать, но и создавать конфликты.
- SEO-модули: многие устаревшие SEO-комбайны лучше заменить встроенными инструментами Joomla 5.
- Конструкторы форм: старые генераторы форм без адаптации под PHP 8.1 ломаются наглухо.
- Темы: фреймворки типа T3 Framework или Gantry 3 несовместимы с новой архитектурой.
Чек-лист действий с плагинами:
- ✅ Обновить: если есть версия для Joomla 4/5 — обновите.
- ✅ Заменить: найдите современный аналог. Например, вместо старого FormBuilder — Formidable или CrazyForms.
- ✅ Удалить: если плагин не критичен и замены нет — без сожаления удаляйте.
- ✅ Оставить (если жизненно необходимо): попробуйте найти форк от сообщества или написать свой код-мост, но только если вы уверены в своих силах.
Не начинайте обновление ядра, пока не составите список «заменённых» и «удалённых» расширений.
Техническая часть: Пошаговая миграция ядра
Итак, тестовая копия готова, плагины проанализированы. Приступаем к обновлению ядра. Главное правило: прямой переход с 3.10 на 5.0 невозможен технически. Всегда нужна промежуточная станция — последняя стабильная версия Joomla 4.
Метод 1: Миграция через плагин «Joomla Updater» (Рекомендуемый)
Встроенный механизм обновления — основной путь. Он проведёт вас от тройки к четверке и затем к пятёрке.
Пошаговая инструкция:
- Зайдите в админку тестового сайта.
- Удалите проблемные плагины: в «Расширения» → «Управление» найдите все, что не имеют версии для Joomla 4/5, и удалите. Если плагин критичен, но не обновлён, временно отключите его и при необходимости позже замените.
- Обновите ядро до Joomla 4.x: перейдите в «Система» → «Обновить» → «Joomla». Система сама предложит последнюю версию линейки 4 (например, 4.4.10). Нажмите «Обновить» и дождитесь завершения.
- Проверка после обновления до 4: сайт может выглядеть криво — это нормально, скорее всего, тема не подтянулась. Временно активируйте стандартную Cassiopeia. Зайдите в «Система» → «Информация о системе» → «Проверка системы» и устраните все предупреждения.
- Обновите ядро до Joomla 5.x: когда на четвёрке всё стабилизировалось, снова «Система» → «Обновить» и установите предложенную версию 5.
- Финальная проверка: убедитесь, что сайт открывается, обновите списки расширений, при необходимости вручную установите последние версии плагинов.
Что делать, если обновление не прошло?
- Ошибка «PHP версия не поддерживается» — проверьте, что на тестовом сервере действительно PHP 8.1+.
- Ошибка «Недостаточно памяти» — увеличьте memory_limit в php.ini до 256M или выше. Если не помогает, вручную очистите папку tmp и кэш через FTP.
- Ошибка «Не удалось скопировать файл» — проверьте права доступа: папки 755, файлы 644, configuration.php 640.
Метод 2: Миграция через создание нового сайта (Для сложных случаев)
Если проект оброс кастомным кодом, десятками безнадёжно устаревших модулей, а обновление через штатный апдейтер вызывает ошибки базы данных, разумнее построить новый сайт на Joomla 5 и импортировать туда контент.
Пошаговая инструкция:
- Установите чистую Joomla 5 на поддомене (new.yoursite.ru). Используйте стандартную тему Cassiopeia, чтобы не усложнять старт.
- Импортируйте данные: используйте плагин Joomla Content Importer или Content Transfer. Подключите старую базу и выберите, что переносить: статьи, категории, пользователей, медиа. Внимание: пользовательские поля (custom_fields) часто требуют ручного вмешательства — могут не подхватиться автоматически.
- Перенесите медиафайлы: просто скопируйте папку images из старого сайта в новый. Проверьте, что все изображения видны.
- Настройте тему и плагины: установите современную тему (Helix Ultimate, Gantry 5 или аналог) и новые версии необходимых плагинов. Настройки модулей, меню и блоков придётся задать вручную — старые не импортируются.
- Тестирование: пройдите по всем страницам, проверьте формы, меню и специфический функционал.
Преимущества метода: полный контроль над кодом, никаких «хвостов» от старых расширений, возможность освежить дизайн.
Недостатки: больше времени, ручная настройка модулей, риск потерять некоторые данные (особенно кастомные поля).
Решение проблем с плагинами и темами
После обновления ядра неизбежно всплывут две типичные проблемы: неработающие расширения и сломанная вёрстка. Разбираемся по порядку.
Проблема 1: Плагины не работают
Сценарий: после обновления часть плагинов отключена или выдаёт статус «Необновленная версия».
План действий:
- Зайдите в «Расширения» → «Управление», нажмите на плагин и проверьте актуальную версию. Если она старая (1.0.0, дата выпуска 2019 год) — совместимости с Joomla 5 нет.
- Обновите: скачайте версию для Joomla 5 с сайта разработчика и установите.
- Замените: если официального обновления нет, найдите аналог. Для форм — Formidable или CrazyForms, для SEO — встроенные настройки Joomla 5, для соцсетей — EasySocial или JoomSocial.
- Исправьте вручную (только для опытных): замените jQuery 1.x на jQuery 3.x или нативный JavaScript в коде плагина. Крайне рискованно без глубоких знаний.
Проблема 2: Тема не отображается
Сценарий: вёрстка поплыла, меню перестало работать, стили не применяются. Тема, скорее всего, осталась со времён Joomla 3.
Что делать:
- Проверьте версию темы в «Расширения» → «Темы». Если последнее обновление было до 2020 года, тема безнадёжно устарела.
- Установите современный шаблон, поддерживающий Joomla 5: Helix Ultimate, Gantry 5, ThemePure. Активируйте его.
- Настройте дизайн вручную: цвета, шрифты, позиции модулей, меню. Конструкторы вроде Helix Builder позволяют быстро воссоздать привычный вид.
- При необходимости замените старые CSS-классы: Joomla 5 перешла на Bootstrap 5, поэтому, если в вёрстке использовались классы Bootstrap 3, их нужно адаптировать. К счастью, синтаксис во многом похож, но нюансы есть.
Таблица: Популярные плагины и их замены для Joomla 5
| Старый плагин (Joomla 3) | Проблема | Замена (Joomla 5) |
|---|---|---|
| JomSEO | Не обновляется | Встроенные SEO-инструменты Joomla 5 |
| FormBuilder | Не работает на PHP 8 | Formidable, CrazyForms |
| K2 (комментарии) | Не поддерживается | JComments 4, EasyComments |
| Helix 1 | Старая версия | Helix Ultimate |
| Gantry 3 | Не обновляется | Gantry 5 |
| SEO Booster | Старая версия | Настройки SEO в Joomla 5 |
| Social Share | Не работает | EasySocial, JoomSocial |
Не пытайтесь силой заставить старый плагин работать на Joomla 5 — это приведёт к ошибкам и дырам в безопасности.
Перенос данных и финальная проверка на живом сервере
Когда тестовый сайт на Joomla 5 стабилен, все плагины на своих местах, а тема радует глаз, переносим результат на боевой сервер.
Шаг 1. Подготовка основного сервера
- Создайте свежую резервную копию рабочего сайта (файлы + база) и скачайте её. Это финальная страховка.
- Проверьте версию PHP на основном сервере: должна быть 8.1 или выше. При необходимости обновите через панель хостинга.
- Права доступа: папки 755, файлы 644, configuration.php 640 или по требованию хостера.
Шаг 2. Перенос тестового сайта на основной
Вариант А (тестовый сайт на том же сервере):
- Скопируйте файлы из папки поддомена test.yoursite.ru в корень основного домена.
- В phpMyAdmin удалите старую базу (или создайте новую) и импортируйте SQL-файл из тестового проекта.
- Исправьте configuration.php: укажите параметры основной базы и base_url.
Вариант Б (тестовый сайт был на другом сервере):
- Скачайте файлы и дамп с тестового сервера.
- На основном сервере замените файлы (старые лучше сначала переместить в backup), создайте базу и импортируйте SQL.
- Отредактируйте configuration.php под новое окружение.
Кстати, для быстрого развёртывания можно использовать Akeeba Kickstart: загружаете архив и скрипт распаковки на хостинг — и через мастер за пару минут настраиваете подключение к базе.
Шаг 3. Финальная проверка
Чек-лист:
- Открытие сайта: пройдите по всем основным страницам.
- Меню и навигация: проверьте все ссылки и уровни вложенности.
- Формы: заполните форму обратной связи, убедитесь, что письмо приходит на почту (настройки SMTP часто сбиваются).
- Изображения: все картинки должны отображаться, иначе проверьте пути в папке images и права доступа.
- SEO: проверьте мета-теги, robots.txt и sitemap.xml, отправьте карту сайта в Google Search Console.
- Пользователи: попробуйте войти в админку и зарегистрироваться как обычный пользователь.
- Модули: все блоки, календари, слайдеры должны быть на месте и функционировать.
Если что-то пошло не так: ошибка 500 — копаем логи сервера и php.ini; 404 — проверяем структуру меню; не работают картинки — права доступа к images; форма молчит — настройки почтового плагина.
Шаг 4. Отключение тестового сайта
Когда боевой сайт стабилен, удалите поддомен с тестовой версией, а также его файлы и базу. Сохраните резервную копию финального проекта на Joomla 5 — пригодится для будущих апдейтов или быстрого восстановления.
Чек-лист: Что нужно сделать перед миграцией
Держите этот список под рукой — он не даст упустить мелочи.
Подготовка:
- [ ] Сделана полная резервная копия (файлы + база).
- [ ] Копия скачана на компьютер.
- [ ] Создан тестовый сайт на поддомене или локальном сервере.
- [ ] На тестовом сайте установлен PHP 8.1+.
- [ ] Проведен аудит всех плагинов и тем.
- [ ] Составлен список плагинов, которые нужно обновить, заменить или удалить.
- [ ] Удалены старые расширения, не поддерживающие Joomla 5.
- [ ] Установлены новые версии плагинов для Joomla 5.
- [ ] Установлена новая тема (если старая не обновляется).
Миграция:
- [ ] Обновлено ядро до Joomla 4.x (через штатный апдейтер).
- [ ] Проверена стабильность на версии 4.x.
- [ ] Обновлено ядро до Joomla 5.x.
- [ ] Проверена стабильность на версии 5.x.
- [ ] Все модули и формы работают.
- [ ] Все изображения отображаются.
- [ ] Меню функционирует корректно.
Перенос на основной сервер:
- [ ] Сделана резервная копия боевого сайта.
- [ ] Проверена версия PHP на основном сервере.
- [ ] Перенесены файлы и база данных.
- [ ] Отредактирован configuration.php.
- [ ] Сайт запущен и проверен по финальному чек-листу.
- [ ] Отключен тестовый сайт.
- [ ] Сохранена резервная копия нового сайта.
FAQ: Часто задаваемые вопросы о миграции
1. Можно ли обновиться напрямую с Joomla 3.10 на Joomla 5.0?
Нет. Прямой переход технически невозможен из-за кардинальных изменений в структуре базы данных и файлов. Всегда проходите через последнюю стабильную версию Joomla 4 (сейчас это 4.4.10). Такой путь гарантирует корректное обновление и минимизирует риск ошибок.
2. Что делать, если после обновления сайт не открывается (Ошибка 500)?
Ошибка 500 обычно указывает на проблемы с PHP или базой данных. Проверьте:
- Версию PHP — должна быть 8.1+.
- Параметры подключения к БД в configuration.php.
- Права доступа к папкам (755) и файлам (644).
- Лог ошибок (error.log) в корне сайта или в панели хостинга — там будет точная причина.
3. Старые плагины не работают, можно ли их «запустить» на Joomla 5?
Категорически не советую. Плагины, написанные под Joomla 3, несовместимы с пятёркой. Попытки их оживить приведут к критическим ошибкам, а старые уязвимости останутся открытыми. Найдите современную замену или, если плагин уникален, обратитесь к разработчику для адаптации.
4. Нужно ли менять тему оформления после миграции?
Если ваша тема не обновлялась с 2020 года — да, нужно. Установите современный шаблон с поддержкой Joomla 5 (Helix Ultimate, Gantry 5). Настройки старой темы автоматически не подхватятся, их придётся задавать вручную. Зато это шанс освежить дизайн без потери контента.
5. Как перенести custom_fields (пользовательские поля) из Joomla 3 в Joomla 5?
Пользовательские поля имеют разную архитектуру в версиях. Варианты:
- Используйте плагин Content Transfer или Joomla Content Importer — они умеют импортировать поля.
- Если автоматика не срабатывает, создайте поля в Joomla 5 заново и заполните их данными через прямой SQL-запрос из старой базы. Требует аккуратности.
6. Миграция сломала SEO-позиции сайта, что делать?
После миграции обязательно:
- Проверьте, не изменились ли URL — при необходимости настройте 301 редирект со старых адресов на новые.
- Убедитесь, что мета-теги (title, description) корректны.
- Обновите sitemap.xml и отправьте в Google Search Console.
- Проверьте robots.txt, чтобы случайно не закрыть индексацию.
7. Можно ли сделать миграцию без тестового сайта?
Нет. Рисковать живым проектом — плохая идея. Тестовая площадка даёт возможность спокойно выявить все проблемы и не потерять посетителей и продажи.
8. Сколько времени занимает миграция?
Сильно зависит от сложности проекта. Небольшой сайт-визитку на стандартных компонентах реально перенести за 2–4 часа. Средний корпоративный портал с парой десятков плагинов и кастомным кодом потребует от 6 до 12 часов чистого времени. Крупные проекты с интернет-магазинами, форумами и уникальными доработками могут растянуться на день-два с учётом тестирования. По моему опыту, самый быстрый переезд интернет-магазина с 200 товаров занял около 4 часов — но только потому, что данные были идеально подготовлены.