我们正在使用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服务器。