如何在不显式约束所有依赖包的情况下约束与PHP的兼容性

时间:2018-09-16 15:10:54

标签: composer-php

我在composer.json中有此要求:

"php": ">= 5.6",
"symfony/http-foundation": "^3.0"

该配置的问题在于它将安装paragonie/random_compat v9.99.99,该版本仅与PHP 7及更高版本兼容。但事实是我不希望我的composer.lock文件需要PHP 7,我希望它仍然与PHP 5.6兼容。

我发现的解决方案是跟踪哪个软件包提取了此依赖关系,一旦找到它,便将其添加到我的需求中:

"paragonie/random_compat": "~2.0"

但是我想知道是否还有更好的方法:以某种方式告诉我我接受PHP 5.6以上的所有版本,但是我不接受会强制安装PHP 7的软件包吗?

1 个答案:

答案 0 :(得分:2)

如果您想使composer.lock与PHP 5.6兼容,则至少有两个选择可以实现:

  1. 将PHP 5.6用于composer update-您应该能够在操作系统上安装多个版本的PHP并运行Composer,如下所示:

    /path/to/php6.5 /path/to/composer update
    
  2. 使用composer.json中的platform设置来强制安装特定版本,而与用于运行Composer命令的PHP版本无关:

    "config": {
        "platform": {
            "php": "5.6.38"
        }
    },