Оновлення з 2.x до 3.0
Ця інструкція призначена для наявних магазинів на ocStore (OpenCart) версій 2.x, які потрібно оновити до ocStore 3.0.4.1 зі збереженням товарів, замовлень, клієнтів і налаштувань. Для нового магазину скористайтеся інструкцією Встановлення.
Оновлення змінює структуру бази даних і файли магазину, і відкотити його без резервної копії неможливо. Не починайте, доки не матимете повної копії бази даних і всіх файлів. Найкраще спершу провести оновлення на тестовій копії сайту.
Пряме оновлення з 1.5.x до 3.0 офіційно не підтримується. Для таких магазинів зазвичай простіше встановити ocStore 3.0.4.1 начисто й перенести дані (товари, категорії, клієнтів, замовлення) окремими інструментами. За допомогою зверніться на форум спільноти OpenCartForum.
Що зміниться після оновлення#
Щоб оцінити обсяг робіт, врахуйте основні відмінності 3.0 від 2.x:
- Шаблони — тільки Twig (
.twig). Теми 2.x (.tpl) у 3.0 не працюють і потребують перенесення (див. Перенесення теми з 2.3 на 3.0). - Доповнення 2.x зазвичай несумісні з 3.0: змінилися шляхи (
extension/<тип>/), назви налаштувань, токен адмінки (user_tokenзамістьtoken). Потрібні версії доповнень саме для 3.0. - Налаштування доповнень у 3.0 мають префікс типу: наприклад,
payment_cod_statusзамістьcod_status,total_sub_total_statusзамістьsub_total_status. - Модифікатори OCMOD під час оновлення вимикаються всі без винятку.
- SEO URL переносяться з таблиці
oc_url_aliasу нову таблицюoc_seo_url. - Партнери (affiliates) об'єднуються з покупцями: окремі облікові записи партнерів стають обліковими записами клієнтів із партнерським профілем.
- Сховище
system/storage/(кеш, журнали, сесії, завантаження, модифікації, бібліотеки Composer) — шляхи до нього скрипт оновлення сам пропише вconfig.php. - Коди мов переводяться у формат 3.0:
ua→uk-ua,en→en-gb.
Вимоги до сервера#
Перевірте сервер до початку оновлення (повний перелік — у розділі Системні вимоги).
| Компонент | Вимога ocStore 3.0.4.1 |
|---|---|
| PHP | 8.1 або 8.2 (рекомендовано). Ядро та інсталятор формально перевіряють лише PHP 7.3+, але бібліотеки Composer, що входять до комплекту (зокрема Twig 3), вимагають PHP 8.1 або новіше. |
| База даних | MySQL або MariaDB (драйвер MySQLi). |
| Розширення PHP | cURL, GD, OpenSSL, Zlib, Zip, mbstring або iconv, DOM, Hash, XMLWriter, JSON, MySQLi. |
| Налаштування PHP | file_uploads = On, session.auto_start = Off. |
Магазини на 2.x зазвичай працюють на PHP 5.6–7.x і на PHP 8 не запускаються. Тому версію PHP у панелі хостингу перемикайте після завантаження нових файлів, безпосередньо перед запуском скрипту оновлення (крок 5). Якщо на PHP нижче 8.1 ви побачите повідомлення Composer detected issues in your platform: Your Composer dependencies require a PHP version ">= 8.1.0" — це саме воно.
Підготовка#
- Перевірте доповнення. Складіть перелік встановлених модулів, способів оплати й доставки, модифікаторів. Для кожного з'ясуйте в розробника, чи є версія для ocStore 3.0. Несумісні доповнення після оновлення доведеться замінити.
- Перемкніть тему на стандартну. У старій адмінці виберіть стандартну тему магазину. Власну тему ви перенесете пізніше, окремо.
- Вимкніть сторонні доповнення й модифікатори (OCMOD, vQmod).
- Створіть резервну копію бази даних. Скористайтеся розділом резервного копіювання в адмінці (Система → Обслуговування) або, для великих баз, phpMyAdmin чи
mysqldump. - Створіть резервну копію файлів — заархівуйте всю теку магазину через файловий менеджер хостинг-панелі або скопіюйте її через FTP. Окремо збережіть
config.phpтаadmin/config.php.
Покрокове оновлення#
Крок 1. Завантажте ocStore 3.0.4.1#
Завантажте архів ocStore 3.0.4.1 зі сторінки збірки на OpenCartForum і розпакуйте його на комп'ютері. Файли магазину знаходяться в теці upload/.
Крок 2. Приберіть старі шаблони#
Збережіть резервні копії та видаліть файли шаблонів .tpl стандартної теми (catalog/view/theme/default/template/) і адмінки (admin/view/template/). У 3.0 вони не використовуються, а їх видалення спрощує пошук «залишків» старої версії.
Крок 3. Завантажте нові файли поверх старих#
Завантажте вміст теки upload/ на сервер поверх наявних файлів магазину.
- Не перезаписуйте
config.phpтаadmin/config.php. В архіві ocStore замість них є лишеconfig-dist.phpіadmin/config-dist.php— не перейменовуйте їх під час оновлення. - Обов'язково завантажте нову теку
system/storage/vendor/— у ній бібліотеки, без яких 3.0 не працює (зокрема шаблонізатор Twig). - Якщо тека адмінки була перейменована, завантажте вміст нової
admin/у вашу перейменовану теку.
Якщо ви раніше перенесли storage за межі кореня сайту, файли з upload/system/storage/ (насамперед vendor/) потрібно скопіювати у фактичне розташування сховища, вказане в константі DIR_STORAGE у config.php. Інакше магазин працюватиме зі старими бібліотеками й завершуватиметься фатальною помилкою.
Крок 4. Перевірте права на запис#
Під час оновлення скрипт дописує в config.php та admin/config.php нові константи (шляхи до сховища тощо), тому ці файли мають бути доступні для запису. Також потрібні права на запис для тек image/, image/cache/, image/catalog/ і підтек system/storage/ (cache/, logs/, download/, upload/, modification/, session/).
Крок 5. Перемкніть PHP і запустіть скрипт оновлення#
- У панелі хостингу встановіть для сайту PHP 8.1 або 8.2.
- Відкрийте в браузері
https://ваш-магазин/install/(якщо магазин у підтеці —https://ваш-магазин/підтека/install/). - Інсталятор побачить заповнений
config.phpі автоматично відкриє сторінку Оновлення. - Натисніть Продовжити. Скрипт по черзі застосує всі патчі бази даних; під смугою прогресу з'являтимуться повідомлення на кшталт «Патч 1003 застосовано (4 з 11)». Наприкінці з'явиться повідомлення про успішне оновлення.
Якщо замість сторінки оновлення ви бачите майстер нового встановлення, файл config.php порожній або перезаписаний. Не продовжуйте встановлення — це створить порожній магазин. Відновіть config.php і admin/config.php з резервної копії й відкрийте /install/ знову.
Якщо на якомусь патчі з'явилася помилка, зупиніться, збережіть її текст і зверніться на форум OpenCartForum до продовження робіт.
Крок 6. Видаліть теку install#
Після успішного оновлення видаліть теку install/ із сервера. Доки вона існує, адмінка показуватиме попередження.
Обов'язкові дії після оновлення#
Ці дії вказано й на сторінці оновлення. Не пропускайте їх.
- Очистіть cookie браузера для домену магазину, щоб уникнути помилок токена під час входу в адмінку.
- Увійдіть в адмінку й кілька разів натисніть
Ctrl+F5(абоCtrl+Shift+R), щоб браузер завантажив нові стилі й скрипти. - Оновіть права адміністраторів. Відкрийте Система → Користувачі → Групи користувачів, відредагуйте групу адміністраторів, у списках Дозволено перегляд і Дозволено редагування натисніть Виділити все й збережіть. Без цього нові розділи 3.0 відкриватимуться зі сторінкою «Доступ заборонений».
- Увімкніть тему. Відкрийте Доповнення → Доповнення, виберіть тип Шаблони, активуйте (за потреби) й відредагуйте «Шаблон за замовчуванням»: перевірте Директорію шаблона (
default), встановіть статус «Включено» та збережіть. Якщо пропустити цей крок, вітрина покаже помилкуError: A theme has not been assigned to this store!. - Збережіть налаштування магазину. Відкрийте Система → Налаштування, відредагуйте магазин, перевірте всі вкладки (зокрема поле Шаблон на вкладці Загальні), заповніть порожні поля й натисніть Зберегти — навіть якщо нічого не змінювали. Так у базу запишуться нові параметри 3.0.
- Налаштуйте доповнення заново. Скрипт оновлення не перейменовує ключі налаштувань доповнень, тому способи оплати, доставки, «Враховувати в замовленні» (підсумки) та модулі після оновлення можуть виглядати вимкненими. Відкрийте кожне потрібне доповнення в Доповнення → Доповнення, перевірте налаштування й збережіть. Особливо перевірте тип Враховувати в замовленні (сума, доставка, податки, разом) — без увімкнених підсумків кошик і оформлення замовлення працюватимуть некоректно.
- Модифікатори. Відкрийте Доповнення → Модифікатори: усі модифікатори вимкнено. Видаліть несумісні, встановіть версії для 3.0, увімкніть потрібні й натисніть Оновити (див. Система модифікацій OCMOD).
- Очистіть кеш. Панель стану → кнопка з шестернею («Налаштування розробника») — очистіть кеш шаблонів і системний кеш.
- Перевірте вітрину. Відкрийте магазин, натисніть
Ctrl+F5кілька разів і пройдіть основні сценарії: категорія, товар, пошук, кошик, оформлення замовлення, реєстрація, вхід в особистий кабінет.
Додаткові перевірки#
- SEO URL. Ключові слова з
oc_url_aliasпереносяться для основного магазину й мови за замовчуванням. Для інших мов задайте SEO-адреси вручну в Дизайн → SEO URL (див. SEO URL). Також звірте свій.htaccessіз новим.htaccess.txtз архіву 3.0.4.1. - Сховище. Після першого входу ocStore запропонує перенести теку
storageза межі кореня сайту — зробіть це (див. Встановлення). - Журнал помилок. Перегляньте Система → Обслуговування → Журнал помилок після проходження сценаріїв на вітрині.
- Тема. Переносьте власну тему на тестовій копії за інструкцією Перенесення теми з 2.3 на 3.0.
- vQmod. ocStore 3.0 використовує OCMOD. Якщо ви все ж користуєтеся vQmod, встановіть його версію, сумісну з OpenCart 3.0, повторно запустіть його інсталятор і перевірте журнал vQmod. Скрипти vQmod, написані для 2.x, найімовірніше, потребуватимуть оновлення.
Типові проблеми#
Фатальна помилка «Class "Twig_Loader_Array" not found» або подібна після оновлення
У кеші модифікацій лишилися змінені копії файлів зі старої версії. Видаліть усе з теки storage/modification/, крім index.html (через FTP або кнопкою Очистити в Доповнення → Модифікатори), і знову натисніть Оновити. Також переконайтеся, що нова тека vendor/ завантажена саме в те сховище, на яке вказує DIR_STORAGE.
Білий екран або помилка 500
Перевірте версію PHP (потрібна 8.1 або 8.2) і журнал помилок вебсервера. Тимчасово можна ввімкнути виведення помилок: у файлі system/config/default.php встановіть $_['error_display'] = true;. Після діагностики обов'язково поверніть false.
«Error: A theme has not been assigned to this store!»
Тему не активовано в налаштуваннях 3.0. Виконайте кроки 4 і 5 з розділу «Обов'язкові дії після оновлення».
В адмінці «Доступ заборонений» до нових розділів
Права групи адміністраторів не містять нових маршрутів 3.0. Виконайте крок 3 з розділу «Обов'язкові дії після оновлення».
Після входу в адмінку одразу викидає назад або з'являється помилка токена
Очистіть cookie браузера для домену магазину та увійдіть знову. Посилання й закладки зі старим параметром token= у 3.0 не працюють — використовуйте нові посилання з user_token=.
У кошику немає суми чи способів доставки та оплати
Налаштування доповнень 2.x не підхопилися. Відкрийте відповідні доповнення в Доповнення → Доповнення (типи «Враховувати в замовленні», «Доставка», «Оплата»), перевірте параметри й збережіть кожне.
Якщо проблему пов'язано зі стороннім доповненням — зверніться до його автора по версію для 3.0. Про помилки самої збірки повідомляйте в офіційній темі ocStore 3.0.4.1 на OpenCartForum: перегляньте її одразу після оновлення — можливо, рішення вже опубліковано.