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



我在composer.json中得到了这个要求:

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

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

我找到的解决方案是跟踪哪个包正在拉取此依赖项,一旦找到它,我就将其添加到我的要求中:

"paragonie/random_compat": "~2.0"

但我想知道是否有更好的方法可以做到这一点:以某种方式告诉我接受 PHP 5.6 以上的所有版本,但我不接受强制使用 PHP 7 的软件包?

如果你想使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"
    }
    },
    

相关内容

最新更新