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 ругается.
  • Вопрос задан
  • 246 просмотров
Решения вопроса 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 директорию со старым интерпретатором

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

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

Похожие вопросы