
🧪 Тестування PHP-коду на старих версіях без встановлення: посібник 2026
Написали робочий PHP-код на свіжій версії, запушили в прод і отримали шквал баг-репортів від клієнтів на старих хостингах. Знайомо? Синтаксис, який для вас «сам собою зрозумілий», на PHP 7.0 обертається фатальною помилкою. А встановити десяток застарілих версій локально, щоб перевірити кожен сніпет,, заняття на пів дня, якщо взагалі можливе.
Проблема глибша, ніж здається. Старі версії PHP зникають з офіційних репозиторіїв, не збираються на сучасних ядрах Linux і конфліктують із розширеннями. А WordPress досі крутиться на серверах, де хостер полінувався оновити PHP. У результаті ваш плагін або тема падають у сотень користувачів просто тому, що ви використали типізований аргумент string або короткий синтаксис масиву.
Але є інструмент, який розв’язує цю проблему за секунди: 3v4l.org, безплатний онлайн-тестер PHP-коду на 300+ версіях одночасно. Жодного встановлення, жодних віртуалок. У цьому посібнику розберу, як з його допомогою відловити несумісності до релізу, і покажу на реальних прикладах помилки, які ми самі пропускали в продакшн.
💡 Швидкий огляд:
- Вставте сніпет PHP-коду на 3v4l.org і запустіть виконання на всіх версіях, від PHP 4.3.0 до найновішої 8.5
- Подивіться згрупований вивід: сайт покаже, де код працює, де видає помилку і де поведінка відрізняється
- Вивчіть два класичні приклади несумісності, що ламають плагіни WordPress на старих хостингах, із кодом і посиланнями на живий тест
- Порівняйте альтернативні способи перевірки: Docker-контейнери, PHPBrew, вбудований інспектор PhpStorm, їхні плюси та мінуси
- Подивіться EN-відео з демонстрацією зв’язки TemPHPest + 3v4l прямо з VSCode
Чому ручне встановлення старих версій PHP — це біль
Якщо ви адмініструєте сервер на Linux, то напевно помічали: старі, непідтримувані гілки PHP просто зникають із пакункових менеджерів. Репозиторій ppa:ondrej/php, головне джерело PHP-пакунків для Ubuntu, чесно попереджає під час встановлення:
Надаються лише підтримувані версії PHP для підтримуваних випусків Ubuntu.

На червень 2026 року офіційно підтримуються гілки 8.2, 8.3, 8.4 та 8.5. PHP 8.1 пішов на спочинок у грудні 2025. PHP 7.4, давно історія. Але на shared-хостингах і застарілих VPS досі трапляється PHP 7.0, а то й 5.6. І перевірити на них код локально, квест.
PHPBrew колись рятував: утиліта вміла збирати будь-яку версію PHP з вихідних кодів і перемикатися між ними однією командою. Але проєкт практично не оновлюється з 2020 року, а зібрати PHP 5.6 на ядрі Linux 6.x, та ще головоломка з патчами та прапорцями сумісності. Docker-контейнери простіші, але потребують написання Dockerfile під кожну версію, завантаження образів і все одно від’їдають гігабайти дискового простору.
Альтернатива є, і вона працює прямо в браузері.
3V4l.org: ваш онлайн-тестер на 300+ версій PHP
3v4l.org (leetspeak для «eval») — це онлайн-пісочниця, яка виконує ваш PHP-код більш ніж на 300 версіях інтерпретатора одночасно. Від древнього PHP 4.3.0 до найновішого 8.5. Творець проєкту скомпілював і підтримує кожну значущу версію, випущену за всю історію мови.
Механіка проста до геніальності: вставляєте сніпет у ліву панель, тиснете eval(), і через кілька секунд отримуєте таблицю результатів. Сайт групує версії за виводом: зелені рядки, код відпрацював однаково, жовті/червоні, поведінка різниться або сталася помилка. Ви одразу бачите, на якій мінімальній версії PHP ваш синтаксис стає допустимим.
Що особливо цінно: 3v4l.org показує текст помилок для кожної проблемної версії. Не абстрактне «несумісно», а конкретне Parse error: syntax error, unexpected '[' in ..., із зазначенням рядка. Це економить години дебагінгу.
Кожен тест отримує унікальну URL-адресу, посилання можна додати до тікета, надіслати тімліду або використати як документацію: «Ось proof того, що match-вираз ламається на PHP 7.4».
Приклад 1: короткий синтаксис масиву, міна під WordPress
Розробник пише на JavaScript, перемикається на PHP і за звичкою створює масив:
1 $a = [];
Виглядає невинно. На вашій локальній машині з PHP 8.4 працює. На тестовому сервері з PHP 8.2, теж. Пуш у продакшн, і клієнти з PHP 5.6 отримують білий екран.
Короткий синтаксис масиву [] з’явився тільки в PHP 5.4. До цього, лише array(). І хоча PHP 5.4 вийшов у 2012 році, статистика WordPress.org десятиліттями показувала значну частку інсталяцій на PHP версій, нижчих за 5.4. Зараз ситуація покращилася, але плагіни для WordPress досі зобов’язані враховувати нюанси сумісності.
Проженіть цей сніпет через 3v4l.org](https://3v4l.org/v75em), і отримаєте однозначний вердикт:
1 PHP 5.3.x and older: Parse error: syntax error, unexpected '[' 2 PHP 5.4.x and newer: OK
Жодних здогадок, жодного читання мануалу для кожної конструкції. Економія: 30 секунд замість 15 хвилин гугління «з якої версії PHP працює короткий синтаксис масиву».
Приклад 2: type hints, коли код мовчки ламається на старому PHP
Оголошення типів аргументів робить PHP суворішим і передбачуванішим. Але еволюція type hints ішла нерівномірно, і це створює пастку. Погляньте на код:
1 function handleException(Exception $e) {} 2 function greet(string $name) {} 3 function processItems(array $items) {} 4 5 handleException(new Exception('Test')); 6 greet("hello"); 7 processItems([1, 2, 3]);
Начебто три однотипні оголошення. Але тест на 3v4l.org показує сюрприз:
Тип аргументу | Мінімальна версія PHP |
|---|---|
Ім’я класу ( | PHP 5.0 |
| PHP 5.1 |
| PHP 7.0 |
| PHP 5.4 |
Скалярні типи string, int і bool з’явилися лише в PHP 7.0, через 12 років після класових! Якщо ваш плагін заявляє мінімальну версію PHP 5.6, а ви використали function register(string $username), на старому хостингу це дасть незрозумілу фатальну помилку:
1 Catchable fatal error: Argument 1 passed to greet() must be an instance of string, 2 string given in...
Повідомлення збиває з пантелику: «must be an instance of string, string given». Клієнт читає це як маячню і пише гнівний відгук. А причина проста: PHP 5.6 не розуміє скалярний type hint і намагається інтерпретувати string як ім’я класу.
З 3v4l.org ви ловите такі несумісності за хвилину, а не після десятка баг-репортів.
Альтернативи: IDE, Docker і консольні утиліти
3v4l.org закриває більшість сценаріїв перевірки сумісності, але не всі. Ось що ще є в арсеналі, з плюсами й мінусами.
PhpStorm. Вбудований інспектор JetBrains підсвічує синтаксис, несумісний з обраною версією PHP: ви вказуєте в налаштуваннях «PHP 7.4», і редактор підкреслює match(), typed properties, str_contains(). Однак PhpStorm коштує грошей (підписка від $99/рік), а перевірка статична, реального виконання коду немає. Інспектор не покаже різницю в поведінці array_key_last() між версіями, а 3v4l.org покаже.
Docker. Найгнучкіший спосіб: docker run -v $(pwd):/app php:5.6 php /app/test.php прожене код у точному середовищі. Але для тестування 10 версій потрібно 10 контейнерів, 10 різних образів і сценарій автоматизації. Для швидкої перевірки сніпета, надлишково.
Локальний PHPBrew. Як згадувалося вище, проєкт заморожений, а збирання давніх версій PHP на сучасному ядрі вимагає танців із патчами. У 2026 році простіше відкрити 3v4l.org.
GitHub Actions / CI. Матриця PHP-версій у CI (наприклад, strategy.matrix.php: ['7.4', '8.0', '8.1', '8.2', '8.3', '8.4', '8.5']) ловить проблеми під час кожного пуша. Це must-have для бібліотек, але для авторів плагінів WordPress, які пишуть у Sublime Text або VSCode без CI, 3v4l.org залишається найдоступнішим і найшвидшим інструментом.
Відео: TemPHPest + 3v4l прямо з VSCode
Розширення TemPHPest для VSCode інтегрує 3v4l.org у редактор: виділяєте код, натискаєте комбінацію клавіш і отримуєте результат на всіх версіях PHP, не відкриваючи браузер. Автор розширення записав коротку демонстрацію:
Зв’язка VSCode + TemPHPest + 3v4l.org дає майже безшовний досвід: пишете код, тут же перевіряєте сумісність, виправляєте помилки. Працює швидше, ніж перемикання між редактором і браузером.
⁉️🤔 Часті запитання
3v4l.org безкоштовний?
Так, повністю. Без реєстрації, без обмежень за кількістю запусків, без реклами. Сервіс із відкритим вихідним кодом, працює на особистому сервері автора. Якщо користуєтеся регулярно, можете підтримати автора через GitHub Sponsors — це допоможе оплачувати хостинг та електроенергію.
Які версії PHP доступні на 3v4l.org?
Усі значущі релізи, починаючи з PHP 4.3.0 (вийшов у 2002 році) і закінчуючи найновішою 8.5 (листопад 2025). Кожен мінорний випуск, окремий рядок у таблиці результатів. Загальна кількість, понад 300 версій. Якщо потрібної версії немає в списку, автор додає нові випуски оперативно.
Чи можна тестувати цілі проєкти, а не лише сніпети?
3v4l.org заточений під ізольовані фрагменти коду, функції, класи, окремі алгоритми. Вставити можна кілька сотень рядків, але без
requireтаincludeіз composer-автозавантаженням і підключенням до БД. Для повноцінного інтеграційного тестування проєкту краще підійдуть Docker-контейнери або GitHub Actions із матрицею PHP-версій.
Чи безпечно вставляти чутливий код на сторонній сервер?
Ні. Код на 3v4l.org отримує публічну URL-адресу й технічно доступний за прямим посиланням. Не використовуйте сервіс для конфіденційних даних, ключів API, паролів, закритої бізнес-логіки. Для пропрієтарного коду запускайте локальний Docker-контейнер:
docker run -v $(pwd):/app php:7.4 php /app/private-code.php.
Чим 3v4l.org кращий за вбудовану перевірку в IDE?
Статичний аналіз в IDE (PhpStorm, PHPStan) перевіряє синтаксис і типи, але не виконує код. 3v4l.org реально прожене сніпет через інтерпретатори всіх версій і покаже фактичний вивід, різницю в поведінці
array_key_last(),json_encode()іpreg_match()між версіями. Плюс не потребує придбання IDE, працює в браузері.
Що обрати для перевірки сумісності PHP-коду в 2026 році
Для щоденної роботи автора тем і плагінів схема така. Сніпет, що викликає сумніви, одразу в 3v4l.org. Результат за 5 секунд, посилання на тест додається до коміту. Проєкт, де важлива сумісність із десятком версій PHP,, матриця в GitHub Actions: один раз налаштували, і кожен пуш проганяється автоматично. Швидка перевірка чужого коду перед code review, TemPHPest у VSCode (безкоштовно, інтегровано з 3v4l.org).
Головне, що змінилося порівняно з 2020 роком (коли вихідна версія цього матеріалу тільки з’явилася): PHP 5.6 остаточно пішов із більшості хостингів, мінімальною планкою став PHP 7.4, а на горизонті, PHP 8.5 із новими фічами й новою потенційною несумісністю. Але принцип залишається незмінним: перевірив сумісність до релізу, спиш спокійно. 3v4l.org робить цю перевірку тривіальною.



