Composer更新依赖遇PHP mcrypt错误及pecl7.2-sp命令缺失求助
解决Composer依赖报错及PECL命令找不到的问题
咱们一步步来拆解和解决你的问题:
核心问题分析
你现在有两个关键矛盾:
- 系统CLI默认用的是PHP7.2,但你安装的
mcrypt扩展是给PHP7.1的,导致Composer检测不到对应版本的扩展 - 尝试给PHP7.2装mcrypt时用了错误的PECL命令,导致「command not found」
方案1:切换CLI到PHP7.1(最快解决,若项目支持)
如果你的项目允许使用PHP7.1,这是最直接的办法:
- 先确认当前CLI的PHP版本:
php -v - 列出系统里已安装的PHP版本备选:
update-alternatives --list php - 切换到PHP7.1:
sudo update-alternatives --set php /usr/bin/php7.1 - 再次确认版本:
php -v - 现在重新运行Composer命令,应该能检测到已安装的
php7.1-mcrypt:sudo composer install --prefer-dist --no-dev
方案2:为PHP7.2安装mcrypt扩展(若项目必须用7.2)
如果项目依赖PHP7.2,咱们先解决PECL命令问题,再安装适配的mcrypt扩展:
步骤1:安装PHP7.2的开发工具包
PECL编译扩展需要PHP开发包支持,先安装:
sudo apt-get install php7.2-dev php7.2-pear
步骤2:用正确的PECL命令安装mcrypt
你之前用的pecl7.2-sp是错误的命令,安装php7.2-pear后,直接用pecl就会关联到PHP7.2:
sudo pecl install --nodeps mcrypt-snapshot
注:
mcrypt-snapshot是官方为PHP7.2+提供的兼容版本,因为mcrypt在PHP7.2中已被弃用,没有正式稳定版
步骤3:启用mcrypt扩展
安装完成后,把扩展添加到PHP7.2的CLI配置中:
echo "extension=mcrypt.so" | sudo tee /etc/php/7.2/cli/conf.d/20-mcrypt.ini
步骤4:验证扩展是否加载成功
php -m | grep mcrypt
如果输出mcrypt,说明加载成功。
步骤5:重新运行Composer命令
sudo composer install --prefer-dist --no-dev
额外注意事项
- 如果切换PHP版本后Composer出现异常,可以直接指定PHP版本运行Composer,比如:
php7.1 /usr/bin/composer install --prefer-dist --no-dev - 长期来看,建议尝试升级项目依赖,替换掉已被弃用的mcrypt扩展(比如用openssl替代),避免后续版本兼容问题
内容的提问来源于stack exchange,提问作者Nɪsʜᴀɴᴛʜ ॐ
相关产品推荐
相关产品推荐

