本博客不欢迎:各种镜像采集行为,请尊重知识产权法律法规。大家都是程序员,不要闹得不开心。

众所周知,composer是在php世界里面的一种包管理工具,类似于nodenpm命令。但是,php离了composer的话,大部分时候也是可能正常使用的。所以,composer工具的使用,并不是特别普及。

苏南大叔:php版本号如何影响composer的安装结果? - composer-issue-php
php版本号如何影响composer的安装结果?(图6-1)

本文中,苏南大叔就对composer安装代码的时候,不同的php得到不同的代码结果的问题,做一下描述。测试环境:win10phpstudy@8.1.1.3composer@2.1.6

标的参照物

龙套代码来自阿里云的短信发送范例,下载地址如下:

苏南大叔:php版本号如何影响composer的安装结果? - code-dir
php版本号如何影响composer的安装结果?(图6-2)

主体代码非常轻便,但是composervendor数据,却是非常的多,抓蚂蚁出一窝,比较适合演示本文中的现象。(话说,苏南大叔最不喜欢这样的代码了,本来挺简单的事情,非要弄的特别复杂高大上。)

代码结果报错

原理上来说,composer的正常运行,是需要开启了opensslphp命令的正常运行的。那么,是不是,只要有一个可以正常使用的php命令,那么composer install就一定会安装得到期待的结果呢?深层次的来说,并不是这样的。

在本文中,composer安装的时候,指定了php的版本号7.4.3,但是实际上最终的运行环境是php@5.6.9。所以,composer install得到的vendor代码,里面包含了php@5.6.9所不能理解的先进语法,最终报错。

苏南大叔:php版本号如何影响composer的安装结果? - guzzle-issue
php版本号如何影响composer的安装结果?(图6-3)

分析解决问题

本文中,用于composer运行的默认php版本号为7.4.3,所以,得到的vendor代码会有高级语法代码。

苏南大叔:php版本号如何影响composer的安装结果? - composer-install-php743
php版本号如何影响composer的安装结果?(图6-4)

由于phpstudy自带多套php环境,所以,苏南大叔在用户环境变量里面,作了个小的调整。让默认的php命令切换到了低版本的php@5.6.9。然后删除vendor目录以及composer.lock文件,再次重新执行composer install命令。

苏南大叔:php版本号如何影响composer的安装结果? - composer-install-php569
php版本号如何影响composer的安装结果?(图6-5)

从截图上可以看到:对于同一个composer来说,不同的php版本下,得到了不同版本的guzzle。并且,在低版本的php环境下,输出变成黑白的,而不是彩色了。

php@5.6.9+composer@2.1.6=>guzzle@6.5.5
php@7.4.3+composer@2.1.6=>guzzle@7.3.0

php命令调整的方式

win环境下,利用环境变量切换php版本的方法,如下图所示:

苏南大叔:php版本号如何影响composer的安装结果? - path-order
php版本号如何影响composer的安装结果?(图6-6)

基本上来说,就是调整一下Path变量的顺序即可。注意:切换环境变量后,重启cmd才能生效。如果您是其他的测试环境,大概思路也差不多。大概就是调整一下顺序,更快更早的找到需要的php可运行环境即可。

相关链接

总结

无脑使用composer这么多年了(好吧,说实话没多少代码是基于composer的),头一次发现原来php版本号还能影响vendor里面的代码。就是这么的孤陋寡闻了不是,嘿嘿。

如果本文对您有帮助,或者节约了您的时间,欢迎打赏瓶饮料,建立下友谊关系。
本博客不欢迎:各种镜像采集行为。请尊重原创文章内容,转载请保留作者链接。