跳过composer PHP要求


Skip composer PHP requirement

我们正在使用PHPCI和composer。运行PHPPCI的服务器是在PHP 5.3上运行的。

对于一个项目,我们使用composer添加了Facebook PHP SDK。它需要PHP 5.4。Composer被PHPCI触发并执行。但由于CI服务器刚刚获得PHP 5.3 composer失败,并返回错误消息:

facebook/php-sdk-v4 4.0.9 requires php >=5.4.0 -> no matching package found.

当然,这让我在PHPCI中的构建失败了。

有没有可能跳过这个要求?也许可以在composer.json中添加一个选项?或者composer.phar调用的参数?

我找到了选项:

composer install --ignore-platform-reqs

忽略平台需求(php&ext-包)。


备选方案:指定项目的PHP版本

您可以通过使用要使用的PHP版本配置composer.json#/config/platform/php来跳过平台检查。

然后,Composer将根据配置的PHP版本获取包。

因此,当您需要告诉Composer您的项目依赖项的PHP版本时,如果与您在composer.json项目配置文件(AKA根包)中执行composer的PHP版本不同,您可以(也应该)指定PHP版本:

{
    "config": {
       "platform": {
           "php": "5.6.6"
       }
    }
}

这里PHP 5.6.6版本是示例性的,它可以是8.0.4或任何其他PHP版本。

这也记录了目标(平台)PHP配置。可以指定额外安装的PHP扩展和库版本。

比较:Config:platform-Composer文档

对于许多命令,您可以告诉composer绕过php版本检查,参数为"--ignore-platform-reqs":

composer COMMAND --ignore-platform-reqs

这将绕过php版本规范。

请注意,软件可能工作也可能不工作:php版本规范是存在的,因为代码中的某个地方至少需要指定的php版本,所以如果您使用该代码,软件就会崩溃。

如果任何东西需要特定版本的PHP,它不会在较低版本的PHP中运行。绕过PHP要求时,您仍然会收到错误。

顺便说一句,PHP 5.3已不再维护,我强烈建议更新PHPCI服务器。