Задать вопрос

Open Server или PHPUnit неверно определяют версию PHP?

У меня на компьютере 2 версии Open Server - старая и новая.
В старой PHP 7.3
В новой PHP 8.1
Сейчас я работаю только с новой версией и PHP 8.1.
Установил в проект PHPUnit через composer

packagist - самая свежая версия
10.0.x-dev2023-02-12 08:26 UTC
requires php: >=8.1
аналогично и для 10.0.7

Запускаю консоль в PHPStorm, пишу:
G:\Program Files\OpenServer 5.4.3\domains\test.local>vendor\bin\phpunit
This version of PHPUnit requires PHP >= 8.1.
You are using PHP 7.3.17 (G:\Program Files\OpenServer\modules\php\PHP_7.3\php.exe).

Как видите запуск идет из G:\Program Files\OpenServer 5.4.3\ где PHP 8.1.
А PHPUnit говорит, что G:\Program Files\OpenServer\ где PHP 7.3.

Разумеется, ещё раз проверил phpinfo (а вдруг что то напутал и запустил не то)
Нет, всё верно. PHP Version 8.1.9

Для интереса пошел в PHPUnit, где идет определение версии - там код
if (version_compare('8.1.0', PHP_VERSION, '>')) 
{
// Тут пишем что This version of PHPUnit requires PHP >= 8.1. и останавливаем скрипт.
die(1);
.}


Ок. Пишу в своем скрипте.
$PHP_VERSION = PHP_VERSION;
$version_compare = version_compare('8.1.0', $PHP_VERSION, '>');

echo "PHP_VERSION = $PHP_VERSION version_compare =$version_compare  <br>";

echo "switch version_compare <br>";
switch ($version_compare) {
    case -1: echo '-1 <br>';
    case 0: echo '0 <br>';
    case 1: echo '1 <br>';
}


Результат
PHP_VERSION = 8.1.9 version_compare =
switch version_compare
0
1
Мануал version_compare
По умолчанию функция version_compare() возвращает -1, если первая версия меньше второй; 0, когда они равны; 1, если вторая меньше первой.

0 - равны (8.1.0=8.1.9) ну ок предположим сравнение идет как 8.1 , но 1 - ???

Собственно, в чем дело? Почти самая свежая версия php - а php unit ругается.
  • Вопрос задан
  • 265 просмотров
Подписаться 1 Простой 5 комментариев
Помогут разобраться в теме Все курсы
  • Skillfactory
    Профессия Fullstack веб-разработчик на JavaScript и PHP
    20 месяцев
    Далее
  • Хекслет
    PHP-разработчик
    10 месяцев
    Далее
  • Нетология
    Веб-разработчик с нуля: профессия с выбором специализации
    14 месяцев
    Далее
Решения вопроса 1
Судя по всему у вас прописалось 2 директории с PHP в переменную окружения PATH, соответственно когда запускается команда php windows ищет файл php.exe во всех директориях прописанных в PATH и запускает первый найденный.
У этой проблемы есть 2 решения:
  1. запускать phpunit с нужным интерпретатором
    Пример:
    G:\Program Files\OpenServer\modules\php\PHP_8.1\php.exe vendor\bin\phpunit

  2. убрать из PATH директорию со старым интерпретатором

Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
FoodSoul Калининград
от 180 000 до 250 000 ₽
IT-Spirit Москва
от 230 000 до 320 000 ₽
от 200 000 до 290 000 ₽