首页 > 解决方案 > 如何在不显式约束所有依赖包的情况下约束与 PHP 的兼容性

问题描述

我在我的composer.json

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

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

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

"paragonie/random_compat": "~2.0"

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

标签: composer-php

解决方案


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

  1. 使用 PHP 5.6 composer update- 您应该能够在您的操作系统上安装多个版本的 PHP 并像这样运行 Composer:

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

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

推荐阅读