关于php依赖组件版本的问题

问题:服务器的php环境是php5.6,我本地的环境是php7.1,我想使用composer安装

"illuminate/database",以便来使用ORM的功能,那么我在本地执行composer install的时候

之后,生成了composer.lock文件,因为整个项目是忽略vendor目录的,此时我把项目传到

git上,在服务器上用git拉取代码并且docker自动执行composer install,那么就会报错,

说php版本过低,这是显而易见的错误,因为最新版的illuminate/database,已经明确说明

是依赖php7.1及其以上的版本的

那么我说的问题不是这个,而是我考虑到服务器php版本过低,而直接去使用了较低版本的illuminate/database版本,如下

但是我上传到服务器的时候,执行composer install依然会存在这个问题,说php版本过低,

那么为什么我已经明确了使用较低版本的组件,依赖php版本也是小于5.6的,还是出现这个问题呢

来看一下composer.lock文件中的东西:

很操蛋吧。为什么会这样,同事说因为我本地的composer install的环境就是php7.1,那么我使用的组件依赖于其他组件,其他组件就会使用较高版本的php,以前的做法是我直接写死composer.lock文件。那么现在既然知道了问题所在,我就在本地安装了两个版本的php,并且在win的环境变量中指定了使用php5.6,然后执行composer install(注意,使用phpstorm的时候一定要关闭再重新然后执行composer install,不信的话,改过环境变量之后,执行php -v依然提示的php版本是7.1)就没有这个问题了。感谢同事小飞侠的指导

猜你喜欢

转载自blog.csdn.net/silk_java/article/details/81509269