重写composer中的PHP基依赖项

重写composer中的PHP基依赖项,php,composer-php,Php,Composer Php,我尝试在只有PHP5.5.6的主机上安装Laravel5.1。虽然我要求客户升级,但这可能不可能/不可行 因此,我得到: - This package requires php >=5.5.9 but your PHP version (5.5.6) does not satisfy that requirement. 在composer.phar上安装 有没有一种方法可以让composer安装忽略此依赖关系 我认为这应该是安全的,因为只有5.5.6到5.5.9之间的错误修复。您可

我尝试在只有PHP5.5.6的主机上安装Laravel5.1。虽然我要求客户升级,但这可能不可能/不可行

因此,我得到:

- This package requires php >=5.5.9 but your PHP version (5.5.6)
   does not satisfy that requirement.
composer.phar上安装

有没有一种方法可以让composer安装忽略此依赖关系

我认为这应该是安全的,因为只有5.5.6到5.5.9之间的错误修复。

您可以使用
--忽略平台需求
选项来执行编写器命令,如
安装
更新

--忽略平台要求:忽略php、hhvm、lib-*和ext-*要求,并强制安装,即使本地计算机未满足这些要求。另请参见平台配置选项

所以你可以试试看

composer install --ignore-platform-reqs

错误消息表示来自主
composer.json
的需求。版本要求可以是适配器:

"require": {
    "php": ">=5.5",
像这样更改版本后,我得到:

  Problem 1
    - Installation request for classpreloader/classpreloader 2.0.0 -> satisfiable by classpreloader/classpreloader[2.0.0].
    - classpreloader/classpreloader 2.0.0 requires php >=5.5.9 -> your PHP version (5.5.6) or "config.platform.php" value does not satisfy that requirement.
  Problem 2
    - Installation request for laravel/framework v5.1.17 -> satisfiable by laravel/framework[v5.1.17].
    - laravel/framework v5.1.17 requires php >=5.5.9 -> your PHP version (5.5.6) or "config.platform.php" value does not satisfy that requirement.
  Problem 3
    - Installation request for laravelcollective/html v5.1.6 -> satisfiable by laravelcollective/html[v5.1.6].
    - laravelcollective/html v5.1.6 requires php >=5.5.9 -> your PHP version (5.5.6) or "config.platform.php" value does not satisfy that requirement.
  Problem 4
    - laravel/framework v5.1.17 requires php >=5.5.9 -> your PHP version (5.5.6) or "config.platform.php" value does not satisfy that requirement.
    - jenssegers/agent v2.1.7 requires illuminate/support ~4.0|~5.0 -> satisfiable by laravel/framework[v5.1.17].
    - Installation request for jenssegers/agent v2.1.7 -> satisfiable by jenssegers/agent[v2.1.7].
使用
composer.json
中的以下代码段,可以模拟php版本

[...]
"config": {
    "preferred-install": "dist",
    "platform": {
        "php": "5.5.9"
    }
}
文件:

平台

允许您伪造平台包(PHP和扩展),以便您可以模拟生产环境或在配置中定义目标平台。示例:{“php”:“5.4”,“ext something”:“4.0”}


在此之后,不要忘记运行
composer.phar更新

运行独立于版本的命令可以解决此错误
composer安装--忽略平台要求

我遇到了相同的问题,通过以下命令解决了这个问题:

composer config platform.php 7.2.22 

***您可以根据自己的需要更换PHP版本

在composer.json中更改php版本

删除composer.lock

运行:composer安装


它对我有用

只需在composer.json文件中添加这些行即可

  "config": {
    "platform": {
      "php": "5.5.9"
    }
  },
然后运行命令

composer update or install

还有一种更细粒度的方法只忽略PHP版本吗?或者我甚至可以要求5.5.6而不是5.5.9我不认为有这样的事情。至少我找不到,找到了一条路。就在文件里。但只适用于子包。查看我的答案。检查一下。我浏览了
platform
部分,但没有仔细阅读。很简单:)我在你的答案中添加了doc quote。如果你的基本PHP运行的版本与代码运行的版本不同,那么这里提到的平台包模拟也会有所帮助。例如,我的一个运行Plesk的服务器有一个基本PHP版本5.3.x,虚拟站点的代码运行在5.4.x上。如果没有这一点,集中安装的composer只会选择基本版本,因此在尝试使用依赖于不同PHP版本的软件包时可能会产生问题有办法从CLI执行此操作吗?类似于
composer安装--config platform.php 5.3.3
@Starx为什么不使用
--ignore platform reqs
?@Starx:Yes,
composer config platform.php 5.6
。Laravel项目不幸地决定,他们声明他们的5.1版本与TravisCI上可以测试的最旧可用php版本兼容,也就是5.5.9。一方面,这是一个合理的选择。另一方面,对于在旧版本的5.5PHP分支上运行的人来说,这是一个不必要的障碍,因为在5.5.9之前的PHP5.5中没有向后不兼容的更改—代码将运行。
--ignore platform req
的问题是它会影响所有的包,您可能会得到仅使用PHP 5.6运行的包。另请参见:。您确定这有帮助吗?如果软件包要求特定的PHP版本,可能有一个很好的理由不可以忽略this@NicoHaase是的,挑衅地。。。我已经测试过了,它对我有效,这就是为什么我在这里分享它,如果它对其他人有帮助的话。@NicoHaase我也不是要求忽略php版本,我的问题是我的composer文件中提到了不正确的php版本,我已经更正了,composer安装工作正常。谢谢。这对于那些在MacCatalina上立即更新php的人来说可能非常有用。