Laravel 6使用virgil/crypto加密报错:vscf_ctr_drbg_new_php未定义
问题修复方案
- 第一步清理冲突依赖和无效扩展
执行以下命令移除已安装的不匹配依赖包:composer remove virgil/crypto virgil/sdk virgil/crypto-wrapper
再删除之前安装的virgil系列扩展,将以下命令中[你的PHP版本]替换为你实际使用的PHP版本号(如7.4、8.0等):sudo rm /etc/php/[你的PHP版本]/mods-available/virgil*.ini sudo rm /usr/lib/php/[你的PHP版本]/*virgil*.so - 第二步安装版本匹配的依赖包
报错的核心原因是最新版virgil加密包的底层函数命名和旧版扩展不兼容,直接指定安装匹配的版本即可:composer require virgil/crypto:~5.2.0 virgil/sdk:~5.2.0 - 第三步重新安装对应扩展
执行官方扩展安装脚本:./vendor/virgil/crypto-wrapper/_extensions/setup.sh -all -vendor
安装完成后重启对应版本的PHP服务:sudo systemctl restart php[你的PHP版本]-fpm - 第四步验证修复效果
执行php -m | grep virgil确认扩展正常加载后,重新运行业务代码即可,此时不会再报函数未定义错误。
补充注意:如果Homestead环境共存多个PHP版本,需确保执行composer命令的PHP版本和Web服务使用的PHP版本一致,避免扩展被安装到其他版本的扩展目录导致当前版本加载不到对应函数。
内容的提问来源于stack exchange,提问作者PHP User
相关产品推荐
相关产品推荐

