我们在您的服务器(最大5.3.5)和开发机器(最大5.5.9)上运行不同的PHP版本.
现在我们遇到了一个问题,我们做了一个“作曲家更新”,以获得一些外部Bundles的最新版本.
因为你的composer.json看起来像
"require": {
"PHP": ">=5.3.3",
.....
},
我们得到一些需要PHP 5.5的Bundles.在我们的开发机器上没有问题,但在服务器上:(
是否有可能告诉作曲家要求5.3.3和5.3.5之间的PHP版本?或者最大可用版本?
我试过了
"require": {
"PHP": ">=5.3.3, <=5.3.5",
.....
},
和
"require": {
"PHP": "<=5.3.5",
.....
},
但两者都没有成功.我得到一个“在任何版本中都找不到请求的包PHP,包名中可能有拼写错误.”错误.
有任何想法吗?提前致谢
解决方法:
我发现至少可以说你使用最新的PHP开发并且正在使用非常过时的版本运行生产.由此会产生很多可能出现的问题,不仅仅是因为你会丢失安全补丁,更重要的是因为PHP bug修复主要在版本5.3.9和5.3.23中引入,这些修补程序改变了某些部分的PHP行为从根本上讲细节.不是在谈论意外使用5.4或5.5功能的风险.
而且真的没有办法让Composer处理这种情况.运行composer update时使用的PHP版本决定了依赖项的解析,受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的版本).