Как обновить ядро и модули OpenCart без лишних головных болей
Почему обновление OpenCart — головная боль для владельца?
Клиент обновил OpenCart 2 до 3 — и сломался платёжный шлюз: API order_status изменился, заказы перестали попадать в систему. Без опыта вы потеряете недели. Мы же разобрали проблему за пару часов. У нас за плечами 5+ лет и 30+ проектов по обновлению OpenCart. При правильном подходе апдейт пройдёт без простоев, а вы получите безопасный и быстрый магазин. Экономия на поддержке после своевременного обновления может достигать 30%, а стоимость обновления в разы меньше восстановления после взлома на устаревшей версии.
Подготовка и риски
Почему бэкап критичен?
Без полного бэкапа вы рискуете потерять данные клиентов и историю заказов. Мы используем rsync для файлов и mysqldump для базы, храним снапшоты на отдельном сервере. Это позволяет откатиться за 15 минут. Выполните команды на сервере:
# Бэкап файлов и БД tar czf /backups/opencart-$(date +%Y%m%d).tar.gz /var/www/shop.com mysqldump -u root opencart_db > /backups/opencart-db-$(date +%Y%m%d).sql Два главных риска — потеря кастомизаций и несовместимость модулей. OpenCart использует модификации OCMOD, которые хранятся отдельно от ядра. Если просто скопировать новую версию поверх, OCMOD не слетает, но могут возникнуть конфликты. Второй риск — база данных: миграция может оборваться из-за таймаута. Наш инженер всегда проверяет лог ошибок SQL.
Как обновить ядро: сравнение методов
| Критерий | Встроенный (OC 3.0.3+) | Ручной |
|---|---|---|
| Удобство | Да, 2 клика | Требует SSH-доступа |
| Конфигурация | Не затирает config.php | Нужно настроить исключения |
| OCMOD | Автоматически refresh | Руками Refresh в админке |
| Миграция БД | Встроенный скрипт | cli_install.php upgrade |
Ручное обновление даёт больше контроля, но встроенное быстрее. Для стандартных конфигураций подойдёт встроенный механизм.
Встроенное обновление: Admin → Extensions → Installer → вкладка Updates. Ручное обновление:
# Скачать новую версию wget https://github.com/opencart/opencart/releases/download/4.x.x/opencart-4.x.x.zip unzip opencart-4.x.x.zip # Скопировать только файлы ядра (не затирая config.php и модификации) rsync -avz --exclude='config.php' \ --exclude='admin/config.php' \ --exclude='image/' \ --exclude='system/storage/upload/' \ opencart-4.x.x/upload/ \ /var/www/shop.com/ # Запустить миграцию БД php /var/www/shop.com/install/cli_install.php upgrade Как обновить модули и OCMOD?
OCMOD позволяет устанавливать модификации не изменяя файлы ядра. При обновлении ядра модификации применяются заново: Admin → Extensions → Modifications → Refresh. Модификации хранятся отдельно — они не перезаписываются при обновлении ядра.
Обновление платных расширений: Admin → Extensions → Marketplace → Install, или вручную через Extension Installer (Upload .zip). После установки: Refresh модификаций и очистка кэша. Проблема: платные модули часто привязаны к версии ядра. Перед обновлением ядра проверьте совместимость каждого модуля на сайте разработчика. Если модуль не обновляется, свяжитесь с нами — возможно, потребуется адаптация кода.
Миграция с OC3 на OC4
Прямого upgrade нет — структура БД изменилась значительно. Рекомендуемый путь:
- Установить OpenCart 4 на новый сервер
- Мигрировать контент (товары, категории, заказы) через export/import
- Найти OC4-совместимые версии всех расширений
- Перенести кастомные шаблоны (OC4 использует Twig вместо PHP-шаблонов)
-- Экспорт товаров из OC3 SELECT p.product_id, pd.name, p.model, p.sku, p.price, p.quantity, p.status FROM oc_product p JOIN oc_product_description pd ON p.product_id = pd.product_id AND pd.language_id = 1 INTO OUTFILE '/tmp/products_export.csv' FIELDS TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY '\n'; | Параметр | OpenCart 3 | OpenCart 4 |
|---|---|---|
| Шаблоны | PHP | Twig |
| API | устаревший | RESTful API |
| Поддержка PHP | до 7.4 | 8.0+ |
| Производительность | средняя | выше за счёт кэширования |
Что делать, если после обновления модуль перестал работать?
Проверьте совместимость модуля: откройте его страницу на Marketplace или свяжитесь с разработчиком. Если модуль платный, запросите обновлённую версию. Временно отключите модуль в админке (Extensions → Extensions → выберите тип и нажмите Disable). Если проблема в OCMOD, отредактируйте файл модификации вручную или удалите его через Modifications. Не забудьте очистить кэш.
Проверка и устранение ошибок
После обновления выполните:
# Ошибки PHP tail -f /var/log/php/error.log # Очистить все кэши rm -rf /var/www/shop.com/system/storage/cache/* После очистки кэша проверьте работу корзины, оформления заказа и платёжного шлюза. Если что-то пошло не так — вернитесь к бэкапу.
Что входит в работу по обновлению
Мы предоставляем полный комплекс услуг:
- Полный бэкап файлов и базы данных
- Проверка совместимости всех установленных модулей и расширений
- Обновление ядра с сохранением OCMOD-модификаций
- Тестирование оформления заказа, платежей, логистики
- Устранение конфликтов (если возникли)
- Документация изменений и консультация по дальнейшей поддержке
- Гарантия 30 дней на корректную работу после обновления
Сроки и стоимость
Обновление в рамках одной мажорной версии — от 2 до 4 часов. Переход с OC3 на OC4 — от 2 недель, включая перенос данных и адаптацию шаблонов. Цена рассчитывается индивидуально, зависит от количества модулей и кастомизаций. Оставьте заявку — получите консультацию инженера и оценку проекта под ключ.







