composer install -n —ignore-platform-reqs не игнорирует расширение PHP

#drupal #composer-php #circleci

#drupal #композитор-php #circleci

Вопрос:

у нас выполняется сборка circle composer install -n --ignore-platform-reqs --no-dev , но это больше не игнорирует требования платформы.

Это то, что я вижу в журнале circle. --ignore-platform-reqs Явно не работает. Есть идеи, почему, пожалуйста?

 Your requirements could not be resolved to an installable set of packages.

  Problem 1
    - Installation request for drupal/core 8.6.13 -> satisfiable by drupal/core[8.6.13].
    - drupal/core 8.6.13 requires ext-pdo * -> the requested PHP extension pdo is missing from your system.
  Problem 2
    - typo3/phar-stream-wrapper v2.1.0 requires ext-fileinfo * -> the requested PHP extension fileinfo is missing from your system.
    - typo3/phar-stream-wrapper v2.1.0 requires ext-fileinfo * -> the requested PHP extension fileinfo is missing from your system.
    - Installation request for typo3/phar-stream-wrapper v2.1.0 -> satisfiable by typo3/phar-stream-wrapper[v2.1.0].
  

Ответ №1:

Вместо использования --ignore-platform-reqs или provide взлома лучше имитировать вашу среду с помощью platform настроек — это дает вам больше контроля над требованиями платформы и является более интуитивным, чем provide (ваш пакет на самом деле не предоставляет ext-fileinfo ):

 "config": {
    "platform": {
        "php": "7.2.14",
        "ext-fileinfo": "1.0.5",
        "ext-pdo": "7.2.14",
        "ext-session": "7.2.14",
        "ext-iconv": "7.2.14",
        "ext-zip": "1.15.4"
    }
},
  

Актуальные версии расширений вы можете найти, вызвав эту команду в рабочей среде (хотя вы, вероятно, могли бы указать что угодно для версии расширений — довольно редко использовать что-либо, кроме * как ограничение для расширений PHP):

 composer show -p
  

Комментарии:

1. Я попытался добавить это в platform , но я получил эту ошибку [UnexpectedValueException] Недопустимая строка версии «*»

2. Спасибо @rob . composer show -p помогло. удалось получить правильную версию для этого. У меня есть еще одно предложение, которое мне нужно для composer.json файла. У меня есть «минимальная стабильность»: «dev» , and «prefer-stable»: true» в моем файле composer.json, но всякий раз, когда я пытаюсь установить модуль для drupal с помощью этой команды, composer require 'drupal/file_mdm:^1.1' загрузка версии разработчика, а не стабильной версии вызывает проблемы с моей сборкой. В версии dev есть .git папка, которая создает проблемы с моим репозиторием. как мне заставить composer загрузить стабильную версию через dev?

3. Я не знаком с drupal и его репозиториями, но вы можете попробовать --prefer-dist переключиться. Загрузка пакета из исходного кода напрямую не зависит от его стабильности — вы можете использовать стабильную версию и все еще иметь .git каталог внутри.

4. Спасибо за ответ. Я пытался использовать --prefer-dist , но это не решило проблему. проведем дополнительные исследования. Еще раз спасибо.

Ответ №2:

Я собираюсь ответить на свой собственный вопрос на случай, если кто-то споткнется здесь. Добавление предоставления со списком расширений в мой composer.json файл решило проблему для меня. Это --ignore-platform-reqs не возымело никакого эффекта.

  "provide": {
        "ext-fileinfo": "*",
        "ext-pdo": "*",
        "ext-session": "*",
        "ext-iconv": "*",
        "ext-zip": "*"
    }
  

Комментарии:

1. я бы не рекомендовал этого, таким образом, вы не увидите ошибок в живой среде, в которой их нет. лучше добавьте его в глобальную конфигурацию в вашем домашнем каталоге, как указано в первом решении

2. Спасибо за предложения. Я удалил его из provide и добавил в свои platform настройки.