我们在您的服务器(最大5.3.5)和开发机器(最大5.5.9)上运行不同的PHP版本.
现在我们遇到了一个问题,我们做了一个"作曲家更新",以获得一些外部Bundles的最新版本.因为你的composer.json看起来像
"require": {
"php": ">=5.3.3",
.....
},
Run Code Online (Sandbox Code Playgroud)
我们得到一些需要PHP 5.5的Bundles.在我们的开发机器上没有问题,但在服务器上:(
是否有可能告诉作曲家要求5.3.3和5.3.5之间的PHP版本?或者最大可用版本?
我试过了
"require": {
"php": ">=5.3.3, <=5.3.5",
.....
},
Run Code Online (Sandbox Code Playgroud)
和
"require": {
"php": "<=5.3.5",
.....
},
Run Code Online (Sandbox Code Playgroud)
但两者都没有成功.我得到一个"在任何版本中都找不到请求的包php,包名中可能有拼写错误." 错误.
有任何想法吗?提前致谢
小智 82
由于composer.json中的config参数可用.你可以这样:
{
"name": ".../...",
"config": {
"platform": {
"php": "5.3.5"
}
},
"require": {
...
}
}
Run Code Online (Sandbox Code Playgroud)
https://getcomposer.org/doc/06-config.md#platform
Sve*_*ven 38
我发现至少可以说你使用最新的PHP开发并且正在使用非常过时的版本运行生产.由此会产生很多可能出现的问题,不仅仅是因为你会丢失安全补丁,更重要的是因为PHP bug修复主要在版本5.3.9和5.3.23中引入,这些修补程序改变了某些部分的PHP行为从根本上讲细节.不是在谈论意外使用5.4或5.5功能的风险.
而且真的没有办法让Composer处理这种情况.运行时使用的PHP版本composer update确定依赖项的解析,受PHP版本和已安装的PHP扩展的影响.
如果用于更新的PHP与此版本要求不匹配,则无法定义包仅应用于5.3.3和5.3.5之间的PHP版本.因为使用的PHP版本超出了上限版本,所以这样的包不符合完成版本要求的条件,并且Composer报告没有找到包(没有告诉它已经看过包,但是因为它们必须被忽略)版本约束).
可能有三种明显的方法:
将开发环境降级到您实际使用的生产版本.如果使用多个:最老的一个.这样就可以匹配PHP版本的任何要求.composer update然后跑,你完成了.
升级您的生产环境.不需要进一步解释,但我必须提到,你不仅缺少很多非常好的PHP功能,而且还缺少大幅的性能提升,因为PHP 5.5实际上比5.3快得多.
将"platform.php"配置添加到全局或项目的composer.json中.这将告诉Composer覆盖运行Composer本身的PHP版本,而是使用不同的PHP版本计算依赖关系.composer config -g platform.php 5.3.5对于全局设置(将影响所有进一步的Composer运行),不-g进行本地设置(只会影响该项目中的Composer操作,以防您使用不同的PHP生产版本开发多个项目).
怎么样尝试代字号运算符
Tilde Operator~1.2对于遵循语义版本控制的项目非常有用.~1.2相当于> = 1.2,<2.0.有关更多详细信息,请阅读下面的下一部分.
下一个重要发布(Tilde Operator)#
〜运算符最好用例子解释:~1.2相当于
= 1.2,<2.0,而~1.2.3相当于> = 1.2.3,<1.3.正如您所看到的,它对于尊重语义版本控制的项目非常有用.常见的用法是标记您所依赖的最小次要版本,例如~1.2(允许任何内容,但不包括2.0).从理论上讲,在2.0之前不应该存在向后兼容性中断,这很有效.查看它的另一种方法是使用〜指定最小版本,但允许指定的最后一位数字上升.
注意:尽管2.0-beta.1严格地在2.0之前,但是像~1.2这样的版本约束不会安装它.如上所述~1.2仅表示.2可以改变,但1.部分是固定的.
注意:〜运算符对主要版本号的行为有异常.这意味着例如~1与~1.0相同,因为它不允许主要数字增加以试图保持向后兼容性.
试试这个(删除逗号):
"require": {
"php": ">=5.3.3 <=5.3.5",
.....
},
Run Code Online (Sandbox Code Playgroud)
Remove your composer.lock and vendor directory.
Now place platform option to composer.json
"config": {
"platform": {
"php": "7.0"
}
},
Run Code Online (Sandbox Code Playgroud)
and finally, run command composer install
| 归档时间: |
|
| 查看次数: |
73271 次 |
| 最近记录: |