【问题标题】:How to always use ignore-platform-reqs flag when running composer?运行composer时如何始终使用ignore-platform-reqs标志?
【发布时间】:2021-04-10 19:19:28
【问题描述】:

在我的本地机器上,我有 php v7.0.3。我的一个项目依赖于php v5.5。

正如预期的那样,composer install 的简单运行会崩溃:

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

  Problem 1
    - This package requires php ~5.5 but your PHP version (7.0.3) does not satisfy that requirement.

我知道我可以通过以下方式忽略该平台:

composer install --ignore-platform-reqs

但我经常忘记添加标志。然而,由于应用程序在 docker 容器中运行,因此不匹配的 php 可以正常安装依赖项。

所以我想知道是否有办法让我的本地作曲家总是假设 --ignore-platform-reqs 以便不必输入它。

我喜欢避免设置别名并让它在作曲家配置级别上工作。

【问题讨论】:

  • 你能告诉我你是怎么做到的吗?我只有 1 个 laravel 包,我无法终生安装它。是的,我知道我可以忽略平台要求,但看起来你知道怎么做!
  • @Eduardo 没有上下文就很难知道你想要实现什么。您可以提出链接到此问题的后续问题。最好有一个可重现且最小的有问题的 composer.json 和本地 php 版本的示例。
  • 不用担心,我能够解决我的问题,感谢您的回复,先生是好人! :-) 干杯!

标签: php configuration composer-php hhvm


【解决方案1】:

建议fake php version,而不是忽略平台要求。添加

"platform":{"php":"5.5"}

发送至您的~/.composer/config.json 或使用composer config -g -e 进行编辑。

一个足以伪造php版本的配置示例:

{
    "config": {
        "platform":{
            "php":"5.5"
        }
    }
}

但它可能有更多选择。

【讨论】:

  • 能否提供一个完整的config.json 示例?对我来说,目前似乎忽略了配置。
  • 嗯,刚刚在ubuntu上测试过。 composer show --platform 确认 Package overridden via config.platform (实际:...,当我将 php 伪装成 3.2 时,composer update yelds - 这个包需要 php >=5.2 但你的 PHP版本 (3.2) 没有 ....
  • 我刚刚意识到我对php~5.55.4都有要求,所以我想我在两者之间选择时陷入了僵局。然而我发现特别有趣的是composer config -e打开了项目的composer.json文件而不是作曲家家的config.json
  • 抱歉,错字,一如既往 =(。当然是全局配置:composer config -g -e。特定于用户的配置。您如何解决其他环境中的这种死锁?
  • 我们正在使用 hhvm :D 不理想,但似乎作曲家没有检查 Plattform
【解决方案2】:

Composer v2 中的一项新功能允许您选择性地忽略平台要求。

composer install --ignore-platform-req=php

Composer 已经有一个 --ignore-platform-reqs 选项(注意 reqs 中的 s),但它忽略了所有平台要求,包括 PHP 版本、扩展 (ext-*) 和 composer-plugin-api。

新的--ignore-platform-req 选项可用于设置 Composer 可以忽略的特定要求。

【讨论】:

    【解决方案3】:

    您可以将alias composer="composer --ignore-platform-reqs" 添加到您的.bash_profile,但它会破坏无法识别此选项的命令(例如composer outdated)。

    我个人有:

    alias composer="composer --ignore-platform-reqs"
    alias composer_orig="/usr/local/bin/composer"
    

    因为大多数时候我想要--ignore-platform-reqs,但我仍然可以每次看到都使用composer_orig

    [Symfony\Component\Console\Exception\RuntimeException]

    “--ignore-platform-reqs”选项不存在。

    【讨论】:

      【解决方案4】:

      在 Windows 上,更新 composer.bat(在 C:\ProgramData\ComposerSetup\bin 下)并将 --ignore-platform-reqs 添加到 composer 命令。

      要更新,您可以以管理员身份打开文本编辑器 > Ctrl + O > 打开 composer.bat

      如果您不希望对所有项目进行全局更改,请创建一个新的 .bat 文件并在 PHPStorm > Settings > composer 中使用它

      【讨论】:

        猜你喜欢
        • 2019-08-20
        • 1970-01-01
        • 2018-07-26
        • 2014-11-26
        • 1970-01-01
        • 1970-01-01
        • 2018-09-14
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多