
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. Расскажите о задаче — подготовим оценку.
Заказать кастомный модуль
Покупка модуля
—
