macos上openssl版本问题
Last Updated:2022-08-12
问题描述 macos上openssl版本不对(事实上需要低版本的openssl)
跑Php脚本的时候,遇到这些问题
libreadline.7.dylib
Libraray not loaded
dyld: Library not loaded: /usr/local/opt/readline/lib/libreadline.7.dylib
Referenced from: /usr/local/bin/php
Reason: image not found
libssl.1.0.0.dylib
Libraray not loaded
dyld: Library not loaded: /usr/local/opt/openssl/lib/libssl.1.0.0.dylib
问题原因
1,机子上存在多个openssl版本 2,我这边的php版本,需要到一个比较低版本的openssl
解决方案
解决思路就是换成低版本的openssl(因为我操作系统版本低、mysql、php等版本也不高)
切换方式1:brew switch ...
brew switch openssl 1.0.2s(这个1.0.2s版本号要根据下一步的ls -al xxx方式得到的版本去填写)
其中的1.0.2s
来自下一步的那个ls -al xxx
如何查看本机安装好的openssl各个版本
ls -al /usr/local/Cellar/openssl
切换方式2: 先安装openssl特定版本,然后再通过软连接的方式把这个openssl版本链接到/usr/local/opt/openssl
(我机子的方案,因为brew switch命令已经失效了)
;;brew install rbenv/tap/openssl@1.0;;如果机子上没有安装openssl的1.0版本,可以通过此行安装,我机子上已安装了1.0和1.1的两个版本openssl(在/usr/local/Cellar目录里头查找)
ln -sfn /usr/local/Cellar/openssl@1.0/1.0.2t /usr/local/opt/openssl;;其中的openssl@1.0/1.0.2t可以根据自己机子上实际安装的版本去切换
我使用了自己机子上的openssl的1.0版本遇到的新问题
lrwxr-xr-x 1 apple admin 13 3 7 13:54 openssl@ -> ./openssl@1.0
lrwxr-xr-x 1 apple admin 28 6 2 2021 openssl@1.0@ -> ../Cellar/openssl@1.0/1.0.2t
lrwxr-xr-x 1 apple admin 30 11 21 22:30 openssl@1.1@ -> ../Cellar/openssl@1.1/1.1.1l_1
新问题readline.7.dylib
not loaded
Library not loaded: /usr/local/opt/readline/lib/readline.7.dylib
我本地机子上查找 /usr/local/opt/readline/lib
后发现,lib里头没有readline.7.dylib
,只有各种的8版本的
-r--r--r-- 1 apple admin 40396 11 21 22:31 libhistory.8.1.dylib
lrwxr-xr-x 1 apple admin 20 11 21 22:31 libhistory.8.dylib@ -> libhistory.8.1.dylib
-r--r--r-- 1 apple admin 46616 11 21 22:31 libhistory.a
lrwxr-xr-x 1 apple admin 20 11 21 22:31 libhistory.dylib@ -> libhistory.8.1.dylib
-r--r--r-- 1 apple admin 245476 11 21 22:31 libreadline.8.1.dylib
lrwxr-xr-x 1 apple admin 21 11 21 22:31 libreadline.8.dylib@ -> libreadline.8.1.dylib
-r--r--r-- 1 apple admin 422088 11 21 22:31 libreadline.a
lrwxr-xr-x 1 apple admin 21 11 21 22:31 libreadline.dylib@ -> libreadline.8.1.dylib
drwxr-xr-x 3 apple admin 96 11 21 22:31 pkgconfig/
解决方案是做一个readline.7.dylib
的软连接,指向libreadline.dylib
ln -sfn libreadline.dylib ./libreadline.7.dylib