Обновление магазина
Обновление заменяет файлы ядра более новым выпуском: исправления безопасности, исправления ошибок, новые возможности. В этот момент окупается правило всего курса — всё своё лежит в extension/, а ядро не тронуто. Магазин с изменёнными файлами ядра нельзя обновить, не потеряв эти изменения.
Что меняет обновление
| Часть | Что происходит |
|---|---|
catalog/, admin/, system/ | Файлы заменяются новыми |
extension/opencart/ | Встроенные дополнения заменяются |
extension/acme_hello/ | Остаётся как есть |
config.php, admin/config.php | Остаются как есть |
image/, папка хранилища | Остаются как есть |
| База данных | Сценарий обновления добавляет новые таблицы и столбцы |
Шаг 1. Резервная копия
Прежде всего сохраните файлы и базу:
mysqldump -u root -p shop > shop-before-update.sql
tar -czf shop-before-update.tar.gz /var/www/shopПервая команда сохраняет базу, вторая упаковывает папку сайта в архив. Копию базы можно сделать и в панели: System → Maintenance → Backup / Restore.
Шаг 2. Тестовая копия
Разверните резервную копию по отдельному адресу, например http://test.shop.test/, как в уроке о публикации. Обновление сначала делают там, а на работающем магазине — только после проверки.
Шаг 3. Новые файлы
Скачайте архив нового выпуска и скопируйте содержимое его папки upload поверх файлов магазина. Файлы config-dist.php не копируйте поверх своих файлов настроек — это отдельные файлы, ваши остаются на месте. Если папка admin была переименована, содержимое новой admin копируйте в папку с вашим именем.
Шаг 4. Сценарий обновления
Базу приводит к новой структуре сценарий обновления. Его запускают, открыв адрес папки install, пришедшей с новыми файлами, — http://test.shop.test/install/: установщик видит существующий магазин и предлагает обновление вместо установки. В некоторых выпусках обновление доступно и из панели, в разделе System → Maintenance. Следуйте инструкции по обновлению из архива своего выпуска — шаги различаются между выпусками.
Когда сценарий закончит работу, снова удалите папку install.
Шаг 5. Проверка
| Что проверить | Где |
|---|---|
| Витрина и панель открываются | Оба адреса |
| Версия изменилась | Подвал панели |
| Ваши дополнения работают | Их страницы настроек и блоки на витрине |
| События на месте и включены | Extensions → Events |
| Пробный заказ проходит до конца | Витрина, затем Sales → Orders |
| Журнал ошибок пуст | System → Maintenance → Error Logs |
Между выпусками 4.0 и 4.1 менялись сигнатуры методов и ключи массивов — места, отмеченные в этом курсе как зависящие от выпуска, проверяйте в своём коде первыми.
Частая ошибка
Правку вносят прямо в файл ядра — «там же одна строчка». Через полгода выходит обновление с исправлением уязвимости, и поставить его нельзя: никто не помнит, что и где менялось. Всё своё держите в extension/ и подключайте через события — тогда обновление сводится к копированию файлов и запуску одного сценария.