
🧪 Тестирование 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, и получите однозначный вердикт:
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 делает эту проверку тривиальной.



