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

解决方案

post

解决思路就是换成低版本的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