Composer не работает после указания платформы php версия - PullRequest
0 голосов
/ 13 апреля 2020

Я работаю над проектом для WebApp и хотел бы указать типы для своих свойств класса. Я не осознавал, что это функция PHP версии 7.4. *, Поэтому я прочитал this и обновил свой composer.json, добавив соответствующий материал:

{
    "name": "srmes/shopping-app-test",
    "description": "an assignment from `scandiweb.com`. A simple php-based web application to display and inventory a range of products",
    "require-dev":  {
        "phpunit/phpunit":"~9.0",
        "squizlabs/php_codesniffer": "~3.0"
    },
    "require": {
        "doctrine/orm": "~2.7",
        "php": "7.4.4"
    },
    "config": {
        "platform": {
            "php": "7.4.4"
        }
    },
    "autoload" : {
        "psr-4": {
            "WebApp\\": "src/"
         }
    },
    "autoload-dev" : {
        "psr-4": {
            "WebApp\\Tests\\" : "tests/"
        }
    }
}

I тогда run composer install и composer update.

Похоже, с установкой проблем не возникало, за исключением того, что теперь мои тесты phpunit не запускаются:

PHPUnit 9.1.1 by Sebastian Bergmann and contributors.



Time: 58 ms, Memory: 4.00 MB

No tests executed!

И все команды composer выдайте следующую ошибку:

Parse error: syntax error, unexpected 'string' (T_STRING), expecting function (T_FUNCTION) or const (T_CONST) in /Users/ScottAnderson/Documents/Tech/commissions/shopping_app_test/vendor/ocramius/package-versions/src/PackageVersions/Installer.php on line 33

По иронии судьбы это синтаксическое исключение для функции php, которую я пытался использовать! Я даже не могу запустить composer -vvv для отладки того, какой исполняемый файл php используется composer.

Чтобы решить эту проблему, я должен использовать пакет типа phpbrew для каталог сред php?

Я предполагал, что после требования php 7.4.4 в composer.json, что правильный php исполняемый файл будет установлен и использован composer и phpunit

1 Ответ

1 голос
/ 13 апреля 2020

Похоже, вы не работаете php 7.4. и установленные зависимости (здесь phpunit и PackageVersion) нуждаются в этом. Иногда composer запускает команды, подключенные к событиям, и если команда терпит неудачу, все остальное может упасть.

  • Удалить папку поставщика.
  • Удалить composer .lock
  • Удалить ограничение на php 7.4 версии в composer. json
  • Запустить composer update У вас должно быть все в порядке ?

Кстати composer управляет проектными зависимостями, а не php установленными версиями. Если вы начинаете с PHP, я бы порекомендовал придерживаться версии 7.3, которая широко доступна. Честно говоря, вам не нужны последние синтаксические дополнения к языку.

...