2015-09-29 78 views
16

我尝试在只有PHP 5.5.6的主机上安装Laravel 5.1。当我要求客户升级时,这可能是不可行的。覆盖作曲家的PHP库依赖关系

所以我越来越:

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

有没有办法做一个作曲家安装忽略这种依赖?

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

+0

的Laravel项目不幸决定,它们宣布5.1版本中存在时间最长的PHP版本,他们可以与TravisCI,这是5.5.9兼容测试后运行一个composer.phar update。一方面这是一个合理的选择。另一方面,对于运行5.5 PHP分支的旧版本的人来说,这是一个不必要的障碍,因为在5.5.9之前的PHP 5.5中没有向后不兼容的更改 - 代码将运行。 '--ignore-platform-req'的问题是它会影响所有的包,你可能会得到只能在PHP 5.6下运行的包。 – Sven

回答

23

该错误消息表示从主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" 
    } 
} 

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

平台

让您假的平台包(PHP和扩展),这样你可以模拟生产ENV或在配置定义你的目标平台。例如:{“php”:“5.4”,“ext-something”:“4.0”}。

不要忘记这

+0

我经历了“平台”部分,但没有仔细阅读。非常简单:)我已经为您的答案添加了文档引用。 –

+1

在这里提到的平台包的模拟也有助于您的基本PHP运行与运行代码的版本不同的版本。例如,运行Plesk的我的一台服务器的基本PHP版本为5.3.x,虚拟站点的代码在5.4.x上运行。如果没有这个,集中安装的作曲家只能在基本版本中使用,所以当尝试使用依赖于不同PHP版本的软件包时可能会产生问题 –

+0

有没有一种方法可以从CLI执行此操作?像'作曲家安装--config platform.php 5.3.3'' – Starx

47

您可以使用--ignore-platform-reqs选项像install作曲家命令,update

- 忽略平台的请求数:忽略PHP,HHVM,lib- *和外部 - *要求,即使本地机器不满足这些要求,也要强制安装。另请参阅平台配置选项。

https://getcomposer.org/doc/03-cli.md

所以,你可以尝试用

composer install --ignore-platform-reqs 
+0

还有一种更细粒度的方法,它只忽略PHP版本?或者我甚至可以要求5.5.6而不是5.5。9 – Alex

+0

我不认为有这样的事情。至少我找不到它。 –

+0

找到了一个方法。直接在文档中。但只适用于子包装。看到我的答案。 – Alex