
PHP Upgrade Check для OpenCart — що зламається після переходу на PHP 8.3, 8.4 чи 8.5
Модуль для OpenCart 4, 3 і 2.3 читає кожен PHP-файл магазину — ядро, розширення, патчі OCMOD і vQmod, теми й бібліотеки — і порівнює з тим, що PHP 7.0 … 8.5 прибрав або змінив. Для вибраної версії PHP кожне розширення отримує висновок: готове, лише попередження, зламається, потрібне розширення PHP чи закодоване, а кожна знахідка — файл, рядок і спосіб виправлення. Нічого не виконується і не змінюється. Базова версія безкоштовна; Pro — звіт для розробника й аналіз журналу помилок. Ліцензія назавжди.
- Сумісність
- OpenCart 4.0.2 – 4.1.x (перевірено на 4.1.0.3 з mysqli і 4.0.2.3 з pdo), 3.0.x (перевірено на 3.0.5.0) і 2.3.0.x (перевірено на 2.3.0.2) · висновки для PHP 7.4, 8.0, 8.1, 8.2, 8.3, 8.4 і 8.5 · модуль працює на тому PHP, що й магазин (перевірено на 5.6, 7.0, 8.1, 8.3 і 8.5) · MySQL / MariaDB · мови модуля: українська, англійська, російська
- Версія
-
v1.1.0 (OpenCart 4)
v1.1.0 (OpenCart 3.x)
v1.1.0 (OpenCart 2.3) - Ліцензія
- один сайт, назавжди
- Тріал
- 7 днів, без картки, один на сайт
- Оновлено
- жовтень 2026
Що є в Free,
а що дає Pro
Безкоштовна версія працює без обмеження в часі. Pro додає решту функцій з таблиці.
Як це виглядає
Головне про модуль
Як це виглядає для покупця
Покупець модуля не бачить: на вітрині немає жодного його коду, події чи патча.
Що отримує адмін
Пункт Система → PHP Upgrade Check з чотирма вкладками: «Огляд», «Звіт», «Журнал помилок» (Pro) і «Налаштування».
Що перевірено, а що ні
Перевірено локально на чотирьох версіях OpenCart з офіційних архівів: 4.1.0.3 (mysqli), 4.0.2.3 (pdo), 3.0.5.0 і 2.3.0.2, на PHP 5.6, 7.0, 8.1, 8.3 і 8.5, з увімкненим і вимкненим показом помилок.

Тріал стартує, коли ви попросите
Свіжий інстал — безкоштовна версія, нічого не вмикається само. Кнопка «Спробувати Pro 7 днів» → e-mail → ключ одразу у вікні і листом.

Один ключ — один сайт
Переносите магазин — відв’яжіть ліцензію на старому домені й активуйте на новому самі. Для студій — ключі на 5, 25 сайтів або без обмежень.
Технічні вимоги
OpenCart 4.0.2.0+ і 4.1.x (перевірено на 4.1.0.3 і 4.0.2.3), 3.0.x (перевірено на 3.0.5.0) або 2.3.0.x (перевірено на 2.3.0.2).
PHP — той, на якому працює магазин: збірка для OpenCart 4 — 8.0+, як і сам OpenCart 4; збірки для 3.x і 2.3 — від 5.6. Перевірено на PHP 5.6, 7.0, 8.1, 8.3 і 8.5.
Розширення PHP tokenizer — ним модуль читає код; cURL — для ліцензії Pro і кнопки «найновіший випуск».
База MySQL або MariaDB (перевірено на MariaDB 10.11).
OpenCart 2.3: файли копіюються вручну, бо штатний інсталятор 2.3 потребує FTP.
Мови модуля: українська, англійська, російська.
Історія версій
Перший випуск для OpenCart 4, 3 і 2.3.
Разом з PHP Upgrade Check для OpenCart купують
4 модулі одним замовленням — на 40% дешевше, ніж окремо


Nova Poshta Premium — модуль Нова Пошта для OpenCart 2.3, 3.x і 4.x

LiqPay — оплата карткою для OpenCart 2.3, 3.x і 4.x

Telegram-сповіщення і Viber/SMS покупцям для OpenCart
Повний опис модуля
PHP Upgrade Check для OpenCart — модуль від студії CatCode, який відповідає на одне питання перед зміною версії PHP: що в цьому магазині перестане працювати? PHP 8.1 не отримує виправлень безпеки після 31.12.2025, PHP 8.2 отримуватиме їх лише до 31.12.2026 (дати php.net), а магазин за роки обріс модулями різних авторів, патчами OCMOD і vQmod, темою з правками. Перемкнути PHP «на пробу» на робочому магазині — означає ризикувати сторінкою помилки замість товару чи оформлення.
Модуль читає кожен PHP-файл магазину — ядро OpenCart, розширення, код патчів OCMOD і vQmod, теми, бібліотеки — і порівнює з тим, що PHP 7.0 … 8.5 прибрав або змінив, за офіційними посібниками з міграції php.net. Для вибраної версії PHP кожне розширення, патч і тема отримують висновок, а кожна знахідка — файл, рядок, код і спосіб виправлення. Нічого не виконується і нічого не змінюється.
Як це виглядає для покупця
Покупець модуля не бачить: на вітрині немає жодного його коду, події чи патча. Його робота — щоб покупець не побачив іншого: сторінки помилки замість товару, порожньої сторінки чи оформлення, яке зупинилось на кроці оплати, після того як хостинг перемкнув PHP.
Після зміни версії PHP магазин ламається по-різному. Функцію, яку PHP прибрав (each(), create_function(), mysql_*), PHP не знайде — і сторінка зупиниться з фатальною помилкою. Застаріла функція в OpenCart 4.0 – 4.1.0.3 з вимкненим показом помилок перекидає відвідувача на сторінку помилки. Частина функцій працює, але дає інший результат. Модуль знаходить ці місця до перемикання, тож ви виправляєте їх на своєму розкладі, а не після скарг покупців.
Що отримує адмін
Пункт Система → PHP Upgrade Check з чотирма вкладками: «Огляд», «Звіт», «Журнал помилок» (Pro) і «Налаштування». Пункт з’являється одразу після встановлення.
Огляд
- Цей сервер зараз: версія PHP і статус її підтримки за датами php.net, кнопка «Перевірити найновіший випуск на php.net», версія OpenCart і мінімальний PHP, якого вона вимагає (з system/startup.php), база даних, ionCube Loader, розширення PHP, потрібні OpenCart, memory_limit і max_execution_time.
- Що цей OpenCart робить із «Deprecated»: модуль читає обробник помилок вашого магазину й пише простими словами, чи застаріла функція лише потрапить у журнал, чи перекине відвідувача на сторінку помилки.
- Перевірка: вибір версії PHP (7.4 – 8.5), кнопка «Перевірити зараз» з прогресом і зупинкою, дата останньої перевірки, кількість файлів і файли, які не вдалося прочитати.
- Результат: скільки розширень і частин магазину зламається, потребує розширення PHP, даватиме інший результат, закодоване, має лише попередження і готове; окремо — файли ядра; список «Що виправляти насамперед».
Звіт
Таблиця «що — висновок — знайдено» по кожному розширенню, патчу, темі й частині ядра. «Деталі» розгортають знахідки: рівень, файл і рядок, сам код, що змінилось і в якій версії PHP, як виправити, і блок «Що робити» — попросити в автора версію для потрібного PHP або доручити розробнику виправити рядки. Версія PHP перемикається кнопками без нової перевірки; перемикачі «Показати готові», «Показати не встановлені» і «Показати бібліотеки» додають те, що за замовчуванням сховано.
Патчі OCMOD і vQmod
Патч не має власних файлів: його код вставляється в чужий файл. Модуль читає код кожної вставки OCMOD з бази й кожного XML vQmod і показує знахідку з назвою патча й рядком файлу, який він змінює, — тобто ви одразу бачите, який модуль просити оновити.
Журнал помилок (Pro)
Для того, що видно лише під час роботи. Перемкніть копію магазину (або сам магазин на тиху годину) на новий PHP, пройдіть вітрину, кошик, оформлення й адмінку — і поверніться сюди: модуль читає error.log OpenCart і error_log PHP, групує однакові повідомлення, рахує, скільки разів і коли востаннє, і прив’язує кожне до розширення, патча чи ядра.
Налаштування
- Цільовий PHP за замовчуванням (8.3), перевіряти чи ні файли ядра і бібліотеки vendor/.
- Додаткові папки, які теж треба перевірити, і шляхи, які пропускати (наприклад, стару копію в system/library).
- Ліцензія: тріал Pro на 7 днів або ключ після покупки.
Як це працює — крок за кроком
- Список файлів. admin/ (і перейменована адмінка), catalog/, system/ без кешу, журналів, сесій і завантажень, extension/ в OpenCart 4, PHP-файли в корені, бібліотеки vendor/ (зокрема поза коренем магазину), vQmod, код патчів OCMOD з бази і ваші додаткові папки.
- Групи. Кожен файл належить комусь: розширенню OpenCart 4 (назва, версія й автор — із записів інсталятора чи install.json), розширенню з інсталятора OpenCart 3, ядру (за офіційним списком файлів вашої лінійки OpenCart), розширенню, що постачається з OpenCart (встановлене чи ні), сторонньому розширенню, темі, бібліотеці чи «іншим файлам».
- Читання. Кожен файл розбирається токенізатором PHP — тим самим, яким PHP читає код, — без виконання. Великі файли модуль бере з оглядом на memory_limit сервера, а ті, що не влазять, перелічує «перевірте вручну».
- Правила. 92 функції, 6 розширень цілком (mysql, mssql, mcrypt, imap, pspell, oci8), 30 констант і правила синтаксису й поведінки з посібників міграції php.net для 7.0 … 8.5: each() і create_function() (прибрані в 8.0), $str{0} (8.0), strftime() (застаріла в 8.1), “${var}” у рядках (8.2), параметр «Type $x = null» без «?» (8.4), curl_close() і imagedestroy() (застарілі в 8.5) та інші.
- Без хибних тривог. Не встановлене розширення рахується окремо — його код не виконується. Драйвер бази, якого не використовує config.php, мовчить. Функцію, яку магазин оголошує сам (поліфіл), модуль не вважає прибраною. Рядок за перевіркою версії PHP (PHP_VERSION_ID, version_compare, function_exists) не рахується там, де він не виконується.
- Висновок. Для вибраної версії PHP кожна знахідка отримує рівень: зламається, зупинить сторінку, потрібне розширення, зміниться результат, не перевірити, попередження. Висновок групи — найгірший рівень її знахідок. На OpenCart 4.0 – 4.1.0.3 з вимкненим показом помилок застаріла функція рахується як «Зупинить сторінку».
- Далі — ви. Перемикаєте версію PHP у звіті без нової перевірки, оновлюєте чи виправляєте розширення і запускаєте перевірку знову, доки висновок не стане «Готово».
Що перевірено, а що ні
Перевірено локально на чотирьох версіях OpenCart з офіційних архівів: 4.1.0.3 (mysqli), 4.0.2.3 (pdo), 3.0.5.0 і 2.3.0.2, на PHP 5.6, 7.0, 8.1, 8.3 і 8.5, з увімкненим і вимкненим показом помилок. Кожна сторінка і кожна дія модуля — без жодного повідомлення PHP у журналі. Висновки звірено з очікуваними на тестових розширеннях і справжніх модулях (Mollie 14.1.2, Mollie 9.4 з vQmod 2.6.6, d_quickcheckout). «Незручні» файли — без доступу, бінарні, з помилкою синтаксису, у кодуванні cp1251, з BOM, з вкладеністю на 3 000 рівнів, петлі символьних посилань, файли понад 768 КБ — перевірка доходить до кінця й перелічує, що не прочитала. Великий магазин — 60 836 файлів за 180 секунд. Ліцензійний сервер у тестах підміняв тестовий.
Межі, про які варто знати. Перевірка статична: того, що проявляється лише під час роботи (null у рядковій функції, невідомий ключ масиву, перетворення дробу на ціле), вона не бачить — для цього Pro-сторінка «Журнал помилок». Правило про властивості, створені на льоту (PHP 8.2), перевіряє лише класи без батьківського класу, __set() і трейтів, тож може пропустити частину випадків. Знахідки в бібліотеках vendor/ важливі, лише якщо бібліотекою щось користується, тому за замовчуванням їх сховано. Справжніх закодованих модулів сторонніх авторів ми не перевіряли — лише власний закодований тестовий файл. Не запускали наживо: OpenCart 4.0.0.x – 4.0.1.x і 4.1.0.4, 3.0.0 – 3.0.3.x (списки файлів ядра їх покривають), MySQL 5.7, пакети OCMOD для OpenCart 4, хостинги без вихідних з’єднань (там кнопка php.net просто скаже, що він не відповів). Правила — до PHP 8.5 включно; наступні версії PHP потребуватимуть оновлення модуля.
Що під капотом
- Лише читання. Файли розбираються токенізатором PHP і ніколи не підключаються й не виконуються; модуль не пише ні в чиї файли.
- Одна подія адмінки — пункт меню в «Система». Без подій вітрини, без OCMOD і без правок ядра.
- Власні таблиці для перевірки, черги, груп, знахідок і позначок; видалення модуля їх прибирає.
- Кроки через AJAX по 6 секунд з чергою в базі: перевірка не впирається в max_execution_time і продовжується, доки не дійде до кінця.
- Модуль сам не дає повідомлень PHP. На OpenCart 4 з вимкненим показом помилок навіть одне попередження перекинуло б адмінку на сторінку помилки, тому всі звернення до файлів — «тихі», а нечитабельний файл просто потрапляє в список.
- Списки файлів ядра — з тегів OpenCart на GitHub: 2.0.0.0 – 2.3.0.2, 3.0.0.0 – 3.0.5.1, 4.0.0.0 – 4.1.0.4.
- php.net: дати підтримки версій вбудовані в модуль; найновіший випуск — запит лише за кнопкою, з кешем на добу.
- Ліцензія — окремою групою налаштувань, тож збереження налаштувань її не зачіпає.
Як встановити
- OpenCart 4: Розширення → Інсталятор → завантажте
cc_phpupgrade.ocmod.zip(ім’я архіву не змінюйте) і натисніть «Встановити». OpenCart 3: Розширення → Інсталятор →cc_phpupgrade-oc3.ocmod.zip. OpenCart 2.3: скопіюйте вміст папкиupload/з архівуcc_phpupgrade-oc2.ocmod.zipу корінь магазину. - Розширення → Розширення → Модулі → PHP Upgrade Check → «Встановити».
- Система → PHP Upgrade Check: оберіть версію PHP, на яку переходите, і натисніть «Перевірити зараз».
- Відкрийте «Повний звіт» і почніть зі списку «Що виправляти насамперед».
- Для Pro: Налаштування → Ліцензія — тріал на 7 днів або ключ з листа після оплати.
Питання
про модуль
Не знайшли відповідь? Напишіть у Telegram — відповімо протягом робочого дня.
Модуль щось змінює в магазині чи на сервері?
Ні. Він лише читає PHP-файли й нічого з них не виконує, не править код і не перемикає PHP. Результати пише тільки у власні таблиці. На вітрині модуля немає: одна подія адмінки додає пункт у меню «Система». Перевірку можна запускати на робочому магазині — вона йде короткими кроками до 6 секунд.
Модуль знайде все, що зламається після переходу?
Ні, і ми прямо про це пишемо. Статична перевірка бачить те, що видно в коді: прибрані функції й розширення, змінений синтаксис, застарілі виклики. Частина змін проявляється лише під час роботи: null у рядковій функції, невідомий ключ масиву, властивість, створена на льоту в класі зі спадкуванням. Для них у Pro є «Журнал помилок»: перемкніть копію магазину на новий PHP, пройдіть вітрину, кошик, оформлення й адмінку — і кожне повідомлення буде прив’язане до свого розширення.
Чому звичайне «Deprecated» у звіті позначено «Зупинить сторінку»?
Бо так поводиться сам OpenCart 4.0 – 4.1.0.3: коли «Показувати помилки» вимкнено (а на робочому магазині його вимикають), будь-яке повідомлення PHP, зокрема «Deprecated», перекидає відвідувача на сторінку помилки. Ми відтворили це на OpenCart 4.1.0.3 з PHP 8.5: сторінки категорій і товарів з ще не закешованими картинками перекидали на error.html через imagedestroy() у system/library/image.php:221 — той самий рядок, який модуль показав у звіті до перемикання; на PHP 8.3 ці сторінки відкривались. В OpenCart 4.1.0.4 поведінку змінили: «Deprecated» лише пишеться в журнал. Модуль читає обробник помилок саме вашого магазину й рахує відповідно.
Що робити з розширенням, яке «зламається»?
Звіт показує, що саме: файл, рядок, код і як виправити. Попросіть в автора розширення версію для потрібного PHP (у Pro надішліть йому HTML-звіт) або доручіть розробнику виправити ці рядки. До того PHP на робочому магазині не перемикайте.
А якщо проблема в самому OpenCart?
Знахідки у файлах ядра звіт показує окремою групою «Ядро OpenCart»: модуль знає списки файлів усіх випусків OpenCart від 2.0.0.0 до 4.1.0.4 і відрізняє файли ядра від доданих. Такі знахідки означають, що ядро правили вручну або що ця версія OpenCart старша за потрібний PHP. Наприклад, для OpenCart 2.3.0.2 звіт на PHP 8.3 показує «Файли ядра OpenCart: Зламається». Тоді рішення — оновити OpenCart.
Закодовані модулі (ionCube) теж перевіряє?
Закодований файл не може прочитати ніхто, крім його автора. Модуль знаходить такі файли — ionCube, SourceGuardian, Zend Guard, обфускований eval(base64_decode(…)) — і ставить висновок «Закодовано, не перевірити»: спитайте автора, чи працює ця збірка на новому PHP. На «Огляді» видно, чи стоїть на сервері ionCube Loader: для нової версії PHP його теж має поставити хостинг.
Скільки триває перевірка і чи не покладе вона сервер?
Тестовий OpenCart 4.1.0.3 з кількома розширеннями — це близько 5 300 PHP-файлів. На тестовому магазині з 60 836 файлами (memory_limit 128M, локальний стенд) перевірка тривала 180 секунд — 30 кроків, кожен до 6 секунд, тож вона не впирається в max_execution_time. Огляд і звіт після неї відкриваються за десяту частку секунди. Перевірку можна зупинити. Понад 80 000 файлів модуль не бере й каже про це — виключіть папки з даними в налаштуваннях.
Модуль підкаже, що попросити в хостингу?
Так. «Огляд» показує версію PHP сервера і статус її підтримки за датами php.net, найновіший випуск вашої гілки (запит до php.net лише за кнопкою), розширення PHP, потрібні OpenCart, ionCube Loader, memory_limit і max_execution_time. Розширення PHP вмикаються окремо для кожної версії, тож для нового PHP їх треба увімкнути знову. А функції з розширень, яких у новому PHP більше немає (mcrypt, imap та інші), звіт позначає «Потрібне розширення PHP».
Модуль працює на старому PHP, з якого я переходжу?
Так. Збірки для OpenCart 3.x і 2.3 працюють на PHP від 5.6, збірка для OpenCart 4 — на тому PHP, що й сам OpenCart 4 (8.0+). Ми перевіряли на PHP 5.6, 7.0, 8.1, 8.3 і 8.5. Тобто ставите модуль на поточний PHP, а висновок отримуєте для майбутнього.
Ліцензія на рік?
Ні. Для OpenCart це одна оплата, ліцензія назавжди, і вона одна на всі три збірки: 4.x, 3.x і 2.3. Перевірка, висновки й усі знахідки — у безкоштовній версії без обмеження в часі. 7-денний тріал Pro вмикається кнопкою в Налаштування → Ліцензія, сам він не стартує.
Що лишиться після видалення модуля?
Видалення прибирає подію меню і таблиці модуля з результатами перевірок — даних магазину в них немає. Рядки ліцензії лишаються навмисно, щоб повторне встановлення зберегло покупку чи використаний тріал.
Поки що жодного відгуку. Будьте першим.
Поки питань немає. Запитай — ми відповімо протягом 24 годин.
Не той варіант, що шукаєте?
Робимо кастомні модулі під WordPress, WooCommerce, OpenCart і Shopify. Розкажіть про задачу — підготуємо оцінку.
Замовити кастомний модуль
Купівля модуля
—
