Cocorico安装报错:如何让Composer识别已安装的Mongo PHP扩展?
解决Composer无法识别已安装Mongo PHP扩展的问题
嘿,这个问题我之前踩过坑,核心原因是你混淆了两个完全不同的MongoDB PHP扩展——旧的mongo扩展和新的mongodb扩展,Composer当前依赖的是后者,但你系统里装的是前者。
为什么会出现这个问题?
- 早期的MongoDB PHP扩展叫
mongo,但这个扩展已经被官方废弃,不再维护; - 现在官方推荐的是
mongodb扩展,也就是Composer报错里要求的ext-mongodb; - 你用
php -m看到的mongo是旧扩展,和Composer需要的不是同一个东西,所以它识别不出来。
解决步骤
卸载旧的
mongo扩展(可选但推荐)
如果你的系统里没有其他依赖旧mongo扩展的项目,可以先卸载它:# 如果是通过pecl安装的 sudo pecl uninstall mongo # 如果是通过apt包管理器安装的(Ubuntu 18.04) sudo apt remove php7.1-mongo安装符合要求的
mongodb扩展
Composer要求的是ext-mongodb ^1.3.0,我们直接安装指定版本更稳妥:# 先安装编译依赖 sudo apt install php7.1-dev libmongodb-dev # 通过pecl安装指定版本的mongodb扩展 sudo pecl install mongodb-1.3.0安装过程中如果出现配置选项提示,直接按回车选默认即可。
将扩展添加到PHP配置文件
注意Apache和CLI(Composer使用CLI环境)的PHP配置文件可能是分开的,所以要都配置:# 给Apache的PHP环境添加扩展 echo "extension=mongodb.so" | sudo tee /etc/php/7.1/apache2/conf.d/20-mongodb.ini # 给CLI的PHP环境添加扩展(Composer用的是这个) echo "extension=mongodb.so" | sudo tee /etc/php/7.1/cli/conf.d/20-mongodb.ini验证安装并重启服务
# 重启Apache服务 sudo systemctl restart apache2 # 验证扩展是否安装成功 php -m | grep mongodb如果输出
mongodb,说明安装成功,此时再运行composer install应该就能正常执行了。
内容的提问来源于stack exchange,提问作者Tsounabe
相关产品推荐
相关产品推荐

