MacOS多PHP版本切换下Valet依赖libsodium版本不匹配问题
解决Laravel Valet在PHP 7.4下找不到libsodium.23.dylib的问题
方案1:创建软链接兼容旧版本依赖
直接把系统中已有的libsodium.26.dylib链接成Valet需要的libsodium.23.dylib,大多数情况下高版本libsodium向下兼容旧的动态库版本标识:
sudo ln -s /usr/local/opt/libsodium/lib/libsodium.26.dylib /usr/local/opt/libsodium/lib/libsodium.23.dylib
执行完后再尝试运行Valet命令,大概率能解决问题。
方案2:重新编译PHP 7.4,绑定当前libsodium版本
如果软链接无效,需要让PHP 7.4重新编译时链接到当前系统的libsodium:
brew reinstall php@7.4 --with-libsodium=/usr/local/opt/libsodium
注:如果brew提示--with-参数已废弃,改用环境变量指定路径后重装:
export LDFLAGS="-L/usr/local/opt/libsodium/lib" export CPPFLAGS="-I/usr/local/opt/libsodium/include" brew reinstall php@7.4
方案3:重置Valet与PHP的关联
切换到PHP 7.4后,重置Valet的安装,让它重新适配当前PHP的依赖:
valet uninstall valet install
补充说明:libsodium文件名里的.23/.26是动态库的版本标识(soname),和软件本身的版本号(比如1.0.19)不是一回事,不用刻意去安装对应标识的旧版本软件,通过上述方法调整依赖关联即可。
内容的提问来源于stack exchange,提问作者ptmb
相关产品推荐
相关产品推荐

