项目环境:
操作系统: mac 10.11.5 (mac mini 2014末)
php版本:php7.2.1
tp版本号 : thinkphp v5.1.37 LTS
客户需求:项目中的tp框架不在composer中,导致无法通过composer update升级,需要修复为支持composer升级
首先要了解的是composer.json和composer.lock两个文件
安装 install
install
命令从当前目录读取 composer.json
文件,处理了依赖关系,并把其安装到 vendor
目录下。
php composer.phar install
如果当前目录下存在 composer.lock
文件,它会从此文件读取依赖版本,而不是根据 composer.json
文件去获取依赖。这确保了该库的每个使用者都能得到相同的依赖版本。
如果没有 composer.lock
文件,composer 将在处理完依赖关系后创建它。
composer.lock中的内容如下:
先composer安装一个新的tp5.1的项目,这里你指定了5.1.37也是安装5.1最新版本的(当时5.1.39最新)
composer create-project topthink/think=5.1.* tptest
再把你要修复的项目(简称A项目)迁移到项目来(这种办法虽然有点无语),可是新项目tptest(简称B项目)的vendor下没有我要的指定版本的库怎么办法?
把A项目中composer.lock下的packages字段下的包信息考到B项目下的packages字段下,然后删除vendor下的出了composer和topthink文件夹之外的文件夹(可能你迁移项目时也把之前的类库靠过来啦),B项目的根目录下执行composer install进行安装composer.lock中所指定的库即可。
composer show -o 检查列出本地已安装的包的更新包
composer install 安装composer.lock(无composer.lock则composer.json)中指定的包
修复完成