UA EN
Telegram

Статті · 07.11.2026

OpenCart після переходу на PHP 8: що ламається

Хостер вимикає PHP 7.4, ви перемикаєте версію — і магазин показує білий екран або сторінку з помилками. Це типова ситуація, і вона майже завжди виправляється без переробки магазину.

Чому так стається

PHP 8 прибрав застарілі функції й став суворішим до помилок, які PHP 7 мовчки пропускав. Ядро старих версій OpenCart і особливо сторонні модулі писались під PHP 5–7 і на цих місцях падають.

  • OpenCart 2.x і ранні 3.0.x без правок з PHP 8 не працюють;
  • у новіших 3.0.x ядро значною мірою сумісне, але модулі й теми — ні;
  • OpenCart 4 розрахований на PHP 8, але модулі від 3.x до нього не підходять.

Типові помилки і що вони означають

Знайдіть повідомлення в журналі помилок (system/storage/logs/error.log або лог PHP у панелі хостингу) — за ним видно, який файл і рядок винні.

  • Call to undefined function each() / create_function() — функції видалені в PHP 8, код треба переписати на foreach і анонімні функції;
  • count(): Argument #1 must be of type Countable|array — код рахує елементи у змінної, яка буває null; раніше це було попередження, тепер фатальна помилка;
  • Undefined array key / Undefined variable — це попередження, але якщо показ помилок увімкнений, вони ламають верстку й AJAX-кошик;
  • Required parameter follows optional parameter — застарілий порядок параметрів у функціях модулів;
  • ionCube Loader … not installed — закодований модуль, для нього потрібна версія від розробника під ваш PHP.

Як оновитися без простою

  • зробіть копію сайту й бази на тестовому піддомені;
  • увімкніть на копії PHP 8 і запис помилок у лог, а показ помилок на екрані вимкніть;
  • пройдіть основний сценарій: головна, категорія, фільтр, товар, кошик, оформлення, оплата, адмінка;
  • виправте помилки ядра й модулів, оновіть модулі, для яких є версії під PHP 8;
  • очистіть кеш модифікаторів і теми (Twig) і перемкніть PHP на робочому сайті.

На типовому магазині OpenCart 3 з 15–30 модулями це займає від одного до кількох днів роботи.

Чого краще не робити

Не вмикайте PHP 8 одразу на робочому сайті «подивитись, що буде», і не відкочуйте помилки, просто вимкнувши їх показ: попередження сховаються, а фатальні помилки в кошику чи оплаті лишаться, і про них ви дізнаєтесь із втрачених замовлень.

Часті питання

Чи можна залишитись на PHP 7.4?

Тимчасово — так, якщо хостер дозволяє. Але 7.4 давно не отримує оновлень безпеки, а хостери поступово її вимикають. Краще оновитися планово, ніж в день, коли старий PHP вимкнуть.

Може, простіше одразу перейти на OpenCart 4?

Це окремий великий проєкт: інша тема, інші модулі й перенос даних. Для більшості магазинів дешевше й безпечніше підготувати поточний OpenCart 3 до PHP 8.

Не хочете розбиратися самі?

Опишіть, що відбувається з сайтом, — скажу причину й вартість виправлення протягом дня.

Послуга: Прискорення сайтів і PHP 8 →

Telegram
Telegram Дзвінок