dyld: Symbol not found: / lazy symbol binding failed 之类的问题

已经N次遇到这个问题了...

报错的格式一般是这样的:

 

Stopping PHP FPM: No matching processes belonging to you were found
php-fpm.
Starting PHP FPM: dyld: lazy symbol binding failed: Symbol not found: _SSL_library_init
Referenced from: /usr/local/sbin/php-fpm
Expected in: /usr/local/opt/openssl@1.1/lib/libssl.dylib

 

可以把报错中的重点拎出来:

 

Stopping PHP FPM: No matching processes belonging to you were found
php-fpm.
Starting PHP FPM: dyld: lazy symbol binding failed: Symbol not found: [某文件/常量]
Referenced from: [主要路径]
Expected in: [错误路径]
 

报这个错的原因是:路径所指向的文件不对;或者路径下没有这个文件

如果是路径下没有文件还好发现...如果你有重新升级过什么东西,比如我案例中是升级了openssl 但是实际上fpm用的还是老版本...然后我想把老的openssl卸载掉 系统提示说有wget什么一堆依赖这个卸不了才发现乌龙........

改的方式很简单 这里我用 [主要路径] 和 [错误路径] 来带入:

在终端输入:

 

install_name_tool -change [错误路径] [更新路径] [主要路径]

如果MAC提示权限的问题显示not permitted就

sudo install_name_tool -change [错误路径] [更新路径] [主要路径]

这样就改好了

sudo install_name_tool -change /usr/local/opt/openssl@1.1/lib/libssl.1.1.dylib /usr/local/opt/openssl@1.1/lib/libssl.dylib /usr/local/sbin/php-fpm

 

其中 [主要路径]是指我调用的程序的位置 案例中是指phpfpm

[更新路径] 是指我[主要路径]调用的某个依赖的实际位置 案例中是指openssl的实际可用位置

[错误路径]  是指我[主要路径]调用的某个依赖的错误位置 案例中是指 在报错情况下 phpfpm去调用openssl时所使用的位置

 

如果想要查看[主要路径]的相关路径 可以用这个命令:

otool -L [主要路径]

以下是参考链接:

https://stackoverflow.com/questions/13301786/how-to-fix-libiconv-error-on-mac

 

如果想知道[更新路径]的位置 可以有两个方法解决:

1 全局搜索文件名

        比如php-fpm 找不到libssl.dylib这个文件 就find / -name 'libssl.dylib' 看有没有哪个版本的openssl文件夹下有该文件

2 重新安装openssl 指向新安装包下的文件名

 

 

 

 

 

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值