Composer安装包版本冲突:Mac下Codeception版本引用异常
解决Mac上Codeception默认版本切换问题
我来帮你搞定这个版本冲突的麻烦!问题根源很简单:你系统里全局安装了2.1.6版本的Codeception,而终端执行codecept命令时,会优先查找全局环境里的可执行文件;./vendor/bin/codecept是你当前Laravel项目本地安装的2.4.1版本,所以只能通过完整路径调用。
下面给你几个实用的解决办法,按需选择:
方法1:临时/永久调整PATH优先级
把项目本地的vendor/bin目录放到系统PATH的最前面,让终端优先找本地版本:
- 临时生效(仅当前终端会话):在项目根目录执行这条命令:
执行完后再跑export PATH="./vendor/bin:$PATH"codecept --version,应该就能看到2.4.1了。 - 永久生效:编辑你的shell配置文件(如果用的是zsh,就是
~/.zshrc;bash的话是~/.bash_profile或~/.bashrc),添加上面那行export命令,然后执行:
这样以后打开终端,只要在项目目录下,# zsh用户 source ~/.zshrc # bash用户 source ~/.bash_profilecodecept就会自动调用本地新版。
方法2:卸载全局旧版本
如果你的其他项目不需要依赖全局的2.1.6版本,直接卸载全局的Codeception就行:
composer global remove codeception/codeception
卸载后,终端再执行codecept时,就会自动查找当前目录下vendor/bin里的版本(前提是你在项目根目录,或者PATH包含了./vendor/bin)。
方法3:设置shell别名简化输入
如果不想改PATH或卸载全局版本,可以给本地的Codeception设置一个别名:
- 临时生效:在终端执行:
alias codecept='./vendor/bin/codecept' - 永久生效:同样编辑你的shell配置文件,添加上面的别名命令,然后source一下配置文件。这样以后输入
codecept,就相当于调用./vendor/bin/codecept了。
小提示
如果同时维护多个Laravel项目,每个项目的Codeception版本可能不一样,优先用方法1或方法3,这样能保证每个项目调用的都是自己本地的版本,避免版本冲突。
内容的提问来源于stack exchange,提问作者user1104854
相关产品推荐
相关产品推荐

