Homebrew 中 PHP 5.6openssl 与 icu4c 多版本问题
最近不小心升级了Mac系统到 MacOS Big Sur 造成历史brew安装的PHP5.6不可用。主要是提示以下错误:
dyld: Library not loaded: /usr/local/opt/openssl/lib/libssl.1.0.0.dylib
Referenced from: /usr/local/Cellar/php@5.6/5.6.40/bin/./php
一、尝试方法
在使用HomeBrew 卸载重新后,还是不正常。在每次单独安装单独某个固定版本后,会存在以下两个问题: 1、安装完成后,会自己重构依赖,自动更新到最新版本;2、安装完特定版本后,会删除以前下载的最新版本。
二、解决方案
最后看了一下HomeBrew 特定版本的安装包以及结合PHP提示的错误,认为相应的PHP版本只是缺少特定的版本库,手动安装上就可以。
2.1 如果手动安装
具体的操作步骤哪下:
1. 找到缺少哪些特定版本库,比如我的缺少 openssl l.0.2t 与libicuio.64
2. 根据Homebrew相应的安装文件下载对应源码,然后构建、安装
3. 解决问题。
2.2 相应版本的构建命令
openssl 构建安装命令:
解压安装包,然后进入相应目录执行:
perl ./Configure --prefix=/usr/local --openssldir=etc/openssl no-ssl2 no-ssl3 no-zlib shared enable-cms darwin64-x86_64-cc enable-ec_nistp_64_gcc_128
make depend
make install
icu4c 手动安装
解压进入 source 目录,执行以下命令:
./configure --prefix=/usr/local --disable-samples --disable-tests --enable-static --with-library-bits=64
make
make install
备注
如果查看Homebrew 安装脚本的prefix路径,使用命令 brew --prefix 获取相应的路径