【问题标题】:composer install -n --ignore-platform-reqs not ignoring PHP extensioncomposer install -n --ignore-platform-reqs 不忽略 PHP 扩展
【发布时间】:2019-08-20 22:00:00
【问题描述】:

我们有运行 composer install -n --ignore-platform-reqs --no-dev 的循环构建,但这不再忽略平台要求。

这是我在圈子日志中看到的。 --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].

【问题讨论】:

    标签: drupal composer-php circleci


    【解决方案1】:

    与其使用--ignore-platform-reqsprovide hack,不如使用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
    

    【讨论】:

    • 我尝试在platform 中添加它,但出现此错误 [UnexpectedValueException] Invalid version string "*"
    • 谢谢@rob。 composer show -p 帮助。能够为此获得正确的版本。对于composer.json 文件,我确实还有一个建议。我的composer.json文件中有一个`“minimum-stability”:“dev”, and “prefer-stable”:true,`但是每当我尝试使用此命令为drupal安装模块时composer require 'drupal/file_mdm:^1.1'它的下载开发版本而不是稳定版本导致我的构建出现问题。开发版本中包含 .git 文件夹,并且它与我的存储库产生了问题。我如何强制作曲家通过 dev 下载稳定版本?
    • 我不熟悉drupal 及其存储库,但您可以尝试--prefer-dist 切换。从源下载包并不直接依赖于它的稳定性——你可以使用稳定版本并且里面仍然有.git目录。
    • 感谢您的回复。我尝试使用 --prefer-dist 但这并没有解决它。会做更多的研究。再次感谢。
    【解决方案2】:

    我将回答我自己的问题,以防有人在这里绊倒。在我的 composer.json 文件中添加带有扩展名列表的提供解决了我的问题。这个--ignore-platform-reqs 没有效果。

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

    【讨论】:

    • 我不建议这样做,这样您就不会在没有这些错误的实时环境中看到错误。最好将其添加到您的主目录中的全局配置中,如第一个解决方案中所述
    • 感谢您的建议。我从provide 中取出它并将其添加到我的platform 设置中。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-22
    • 2018-09-20
    相关资源
    最近更新 更多