如何在 Composer 中限制包对某个 PHP 版本的依赖?

How to limit a package's dependency to a certain PHP version in Composer?

我们的生产服务器是 PHP 5.5.24。我需要的一个包 (vlucas/dotenv) 需要 composer.json:

"symfony/polyfill-ctype": "^1.17"

不幸的是,该 symfony 软件包的 1.20 版需要 7.1,这会导致 Composer 的平台检查失败。我不能忽略 error/platform 检查,因为它会导致 PHP 5.5.

出现语法错误

这似乎不适用于子依赖项,仅适用于包本身:

"config": {
    "platform": {
        "php": "5.5.24"
    }
}

我已经完全删除了 vendor 文件夹并进行了全新安装。升级服务器不是一个选项。

你可以只需要一个包的显式版本而没有任何额外的限制,这将 version-lock 其他依赖项。

手动添加 "symfony/polyfill-ctype": "1.17" 到您的 composer.json 文件,或从命令行使用 composer require symfony/polyfill-ctype:1.17

我会警告您,这可能会在您将来升级时让您头疼,因此请务必将其记录在某处。具体来说,您或其他人将来会查看代码并说“我们甚至没有使用它”,然后将其删除。