php版本号如何影响composer的安装结果?
发布于 作者:苏南大叔 来源:程序如此灵动~众所周知,composer
是在php
世界里面的一种包管理工具,类似于node
的npm
命令。但是,php
离了composer
的话,大部分时候也是可能正常使用的。所以,composer
工具的使用,并不是特别普及。
本文中,苏南大叔就对composer
安装代码的时候,不同的php
得到不同的代码结果的问题,做一下描述。测试环境:win10
,phpstudy@8.1.1.3
,composer@2.1.6
。
标的参照物
龙套代码来自阿里云的短信发送范例,下载地址如下:
主体代码非常轻便,但是composer
的vendor
数据,却是非常的多,抓蚂蚁出一窝,比较适合演示本文中的现象。(话说,苏南大叔最不喜欢这样的代码了,本来挺简单的事情,非要弄的特别复杂高大上。)
代码结果报错
原理上来说,composer
的正常运行,是需要开启了openssl
的php
命令的正常运行的。那么,是不是,只要有一个可以正常使用的php
命令,那么composer install
就一定会安装得到期待的结果呢?深层次的来说,并不是这样的。
在本文中,composer
安装的时候,指定了php
的版本号7.4.3
,但是实际上最终的运行环境是php@5.6.9
。所以,composer install
得到的vendor
代码,里面包含了php@5.6.9
所不能理解的先进语法,最终报错。
分析解决问题
本文中,用于composer
运行的默认php
版本号为7.4.3
,所以,得到的vendor
代码会有高级语法代码。
由于phpstudy
自带多套php
环境,所以,苏南大叔在用户环境变量里面,作了个小的调整。让默认的php
命令切换到了低版本的php@5.6.9
。然后删除vendor
目录以及composer.lock
文件,再次重新执行composer install
命令。
从截图上可以看到:对于同一个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
版本的方法,如下图所示:
基本上来说,就是调整一下Path
变量的顺序即可。注意:切换环境变量后,重启cmd
才能生效。如果您是其他的测试环境,大概思路也差不多。大概就是调整一下顺序,更快更早的找到需要的php
可运行环境即可。
相关链接
- https://newsn.net/say/composer-zlib.html
- https://newsn.net/say/composer-update-vendor.html
- https://newsn.net/say/composer.html
- https://newsn.net/say/composer-install-win.html
- https://newsn.net/say/composer-install-mac.html
总结
无脑使用composer
这么多年了(好吧,说实话没多少代码是基于composer
的),头一次发现原来php
版本号还能影响vendor
里面的代码。就是这么的孤陋寡闻了不是,嘿嘿。
本博客不欢迎:各种镜像采集行为。请尊重原创文章内容,转载请保留作者链接。