跳过作曲家 PHP 要求

Posted

技术标签:

【中文标题】跳过作曲家 PHP 要求【英文标题】:Skip composer PHP requirement 【发布时间】:2014-11-27 16:40:23 【问题描述】:

我们正在使用 phpCI 和 composer。运行 PHPCI 的服务器是 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 调用的参数?

【问题讨论】:

【参考方案1】:

对于很多命令,你可以告诉composer绕过php版本检查,参数“--ignore-platform-reqs”:

composer COMMAND --ignore-platform-reqs

这将绕过 php 版本规范。

请注意该软件可能工作或不工作:php 版本规范存在,因为代码中的某处至少需要指定的 php 版本,因此如果您使用该代码,软件将中断。

【讨论】:

--ignore-platform-reqs 并不适用于所有可用的命令,正如您的回答所暗示的那样。【参考方案2】:

我找到了选项:

composer install --ignore-platform-reqs

忽略平台要求(php & ext-packages)。


编辑:你可以跳过平台检查,但 Composer 将根据给定的 PHP 版本获取包。因此,当您需要 composer 在依赖解析期间模拟 PHP 版本时,您可以(并且应该!)在您的 composer.json 中使用它:


    "config": 
       "platform": 
           "php": "5.6.6"
       
    

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

【讨论】:

如何忽略私有存储库。有些包需要私人仓库。 太棒了。当 php cli 尚未反映版本更改时,它很有用。 在 Composer 2 中有一个新命令,可以使用:php.watch/articles/composer-ignore-platform-req 如果你想确保它只忽略php版本要求,你也可以使用--ignore-platform-reqs=php 实际上是--ignore-platform-req php(单数),并且只在 Composer 2 之前有效。【参考方案3】:

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

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

【讨论】:

首先我想知道如何绕过PHP要求。 你不能也不会因为代码在较低的php版本中不起作用 会的。只是 CI 服务器获得了低 PHP 版本。包含 facebook SDK 的服务器在 PHP 5.4 上运行。它只是关于 ci 服务器,它将所有内容打包成一个很好的可部署 zip 文件。 虽然 PHP 5.3 不再由核心 PHP 开发人员维护,但一些 Linux 版本仍然支持它,并且会持续一段时间。 Ubuntu 12.04 LTS 附带 5.3,并在 2017 年 4 月之前受支持 (wiki.ubuntu.com/LTS)。迁移到 14.04 是最好的升级路径,但存在需要大量工作来修复的重大更改(Apache 2.4、php-fpm 等)。因此,很多互联网仍在使用 5.3.x。 true 不幸的是,99% 的软件包,即使是受到良好支持的软件包也没有适当的要求。它比其他任何东西都更能表明开发人员正在使用什么。

以上是关于跳过作曲家 PHP 要求的主要内容,如果未能解决你的问题,请参考以下文章

作曲家要求:找不到包

如何在 laravel 中要求作曲家自动加载器?

作曲家错误 - 您的要求无法解决 - Laravel 4.2 on Mediatemple

作曲家没有看到php-curl

composer(作曲家)安装php-ml

如何要求作曲家的叉子?