跳过作曲家的PHP要求


117

我们正在使用PHPCI和作曲家。运行PHPCI的服务器在PHP 5.3上。

对于一个项目,我们使用作曲家添加了Facebook PHP SDK。它需要PHP 5.4。Composer由PHPCI触发并执行。但是由于CI服务器刚获得PHP 5.3编写器而失败,并显示以下错误消息:

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

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

是否可以跳过此要求?也许通过向composer.json添加选项?还是composer.phar调用的参数?

Answers:


284

我找到了选项:

composer install --ignore-platform-reqs

忽略平台要求(PHP和扩展程序包)。


编辑:您可以与此跳过平台检查,但是Composer会根据给定的PHP版本获取软件包。因此,当您需要作曲家在解析去耦性时也要模拟PHP版本时,可以(并且应该!)在composer.json中使用它:

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

https://getcomposer.org/doc/06-config.md#platform


我如何才能忽略私有存储库。一些软件包需要私人仓库。
dungphanxuan

太棒了 当php cli尚未反映版本更改时,它很有用。
giovannipds

在Composer 2中,有一个新命令可以使用:php.watch/articles/composer-ignore-platform-req
Armin

3

对于许多命令,您可以告诉作曲家使用参数“ --ignore-platform-reqs” 绕过php版本检查:

composer COMMAND --ignore-platform-reqs

这将绕过php版本规范。

请注意,该软件可能无法正常工作:那里有php版本规范,因为在代码中的某个地方至少需要指定的php版本,因此,如果使用该代码,则该软件将损坏。


--ignore-platform-reqs正如您的答案所暗示的,并非适用于所有可用命令。
阿明

-11

如果有什么需要特定版本的PHP,它将无法在较低版本的PHP中运行。绕过PHP要求时,您可能仍然会收到错误。

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


2
首先,我想知道如何绕过PHP要求。
阿明

你不能,你不会因为代码不会在一个较低的PHP版本的工作
沃特Ĵ

3
它会。仅CI服务器获得了较低的PHP版本。包含facebook SDK的服务器在PHP 5.4上运行。它与ci服务器有关,它将所有内容打包到一个不错的可部署zip文件中。
阿明2014年

尽管核心PHP开发人员不再维护PHP 5.3,但某些Linux版本仍然支持它,并且还会持续一段时间。Ubuntu 12.04 LTS附带5.3,并且受支持到2017年4月(wiki.ubuntu.com/LTS)。升级到14.04是最佳的升级途径,但是有一些重大更改,需要大量工作才能解决(Apache 2.4,php-fpm等)。因此,许多互联网仍在使用5.3.x。
Andrew McCombe 2015年

不幸的是,即使是受到良好支持的软件包,也有99%没有正确的要求。它比其他任何事情都更能说明开发人员正在使用什么。
mschuett
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.