PHP提示dyld: Library not loaded问题解决
Mac在命令行执行php命令时,如php -v 有错误提示:
dyld: Library not loaded: /usr/local/opt/openssl/lib/libcrypto.1.0..dylib
Referenced from: /usr/local/bin/php
Reason: image not found
表面看是缺少了libcrypto.1.0.0文件,mac自带的openssl是0.9.8,可以命令行查看下:
/usr/bin/openssl version OpenSSL 0.9.8zh Jan
之前已经使用brew安装了最新的openssl,版本1.1.1g。brew默认安装目录是没有openssl的目录,都是使用openssl@1.1这样的目录,使用命令
brew switch openssl 1.1
建立openssl目录,使用的是切换后的版本1.1,由于是1.1版本,没有1.0,使用软链 ln -s 建立文件链接到1.1。
照理说这样是可行的,但依然会提示错误:
dyld: Symbol not found: _SSL_library_init
查阅资料,openssl1.1跟1.0变化比较大。这种变化导致部分使用的1.0版本的软件无法兼容1.1,最新版本的php可能有解决此问题,这个我就没有去试验,我使用的是7.1.33版本。
以上载图来自:https://wiki.openssl.org/index.php/OpenSSL_1.1.0_Changes
这样就不能使用1.1版本了,brew当前已经去除了openssl1.0的支持,只有1.1版本,mac版本又太低,这个时候只能选择自己编译安装。
下载地址:https://www.openssl.org/source/old/1.0.2/
选择一个版本下载到本地,开始安装:
./Configure darwin64-x86_64-cc shared --prefix=/usr/local/
记得要加上shared,几乎网上资料都没有说明这点,导致安装多次都没有成功。只有加shared参数才会生成dylib文件。
make
sudo make install
在/usr/local/目录下安装需要管理员权限,所以要加上sudo,也可以选择另外的目录,将include, lib和bin等目录安装在同一个目录,后面再另外指定就可以。
安装完成后,默认的openssl已经是最新安装的版本了。
which openssl
/usr/local/bin/openssl
到这一步还没完成,PHP的openssl依赖也需要一并调整。
使用命令查看PHP当前依赖:
otool -L /usr/local/bin/php
修改libcrypto和libssl的路径:
install_name_tool -change /usr/local/opt/openssl/lib/libcrypto.1.1.dylib /usr/local/lib/libcrypto.1.0..dylib /usr/local/bin/php install_name_tool -change /usr/local/opt/openssl/lib/libssl.1.1.dylib /usr/local/lib/libssl.1.0..dylib /usr/local/bin/php
这样,问题解决。
PHP提示dyld: Library not loaded问题解决的更多相关文章
- xcode解决问题dyld: Library not loaded
一.问题 编译通过,联机调试时,应用启动闪退,XCODE的Output出现提示: dyld: Library not loaded: /System/Library/Frameworks/AdSupp ...
- XCode 添加自定义framework运行时出现dyld: Library not loaded的解决方法
XCode添加自定义framework运行时出现dyld: Library not loaded的解决方法 在使用自定义的framework运行时,会出现如下的错误: dyld: Library no ...
- dyld: Library not loaded: /usr/local/opt/icu4c/lib/libicui18n.63.dylib
本地环境报错有 3 处,如下: 1. 执行命令,无论执行 php 的什么命令,统一报错 dyld: Library not loaded: /usr/local/opt/icu4c/lib/libic ...
- 解决 dyld: Library not loaded:Reason: image not found
在使用第三方framework时,直接把framework拖到项目中,运行时报错: dyld: Library not loaded: @rpath/ZipZap.framework/ZipZap R ...
- Swift真机调试时报错dyld: Library not loaded: @rpath/libswiftCore.dylib
dyld: Library not loaded: @rpath/libswiftCore.dylib Referenced from: /private/var/mobile/Containers/ ...
- [iOS Xcode8报错]dyld: Library not loaded: /System/Library/Frameworks/UserNotifications.framework/UserN
[iOS Xcode8报错]dyld: Library not loaded: /System/Library/Frameworks/UserNotifications.framework/UserN ...
- dyld: Library not loaded: @rpath/XCTest.framework/XCTest Referenced from: /private/var/mobile/Conta
dyld: Library not loaded: @rpath/XCTest.framework/XCTest Referenced from: /private/var/mobile/Cont ...
- iOS dyld: Library not loaded 报错解决
Xcode 用的是10.1 版本打的苹果包在 ios系统10.0 以上可以正常运行 但是系统9.3的手机安装后直接运行就崩溃 后来插上电脑联调 报错 dyld: Library not loaded: ...
- 关于dyld: Library not loaded
在接入智凡迪的sdk过程中,遇到以下问题: dyld: Library not loaded: @rpath/SDKFramework.framework/SDKFramework Referen ...
随机推荐
- 浅谈RegExp 对象的方法
JavaScript RegExp 对象有 3 个方法:test().exec() 和 compile().(1) test() 方法用来检测一个字符串是否匹配某个正则表达式,如果匹配成功,返回 tr ...
- cocos2dx 启用cjson
在appDelegate.cpp文件中添加 #if __cplusplus extern "C" { // 加入此代码的目的,防止污染引擎的scripting目录 #include ...
- demo的自动化测试框架设计
[准备环境] pycharm [思路] Python+request+unittest+HTMLTestRunner 框架 框架的可读性需要强 公共方法提取 可变参数需要提取放入配置文件 做好日志记录 ...
- AliOS Things添加环境变量
此电脑->属性->高级系统设置->环境变量->系统变量-新建.
- SpringCloud教程第6篇:config(F版本)
一.简介 在分布式系统中,由于服务数量巨多,为了方便服务配置文件统一管理,实时更新,所以需要分布式配置中心组件.在Spring Cloud中,有分布式配置中心组件spring cloud config ...
- 尚硅谷ajax视频教程2
7.7. 尚硅谷_佟刚_Ajax_典型应用_验证用户名是否可用 整个项目的目录路径如下所示 我们首先新建立一个web工程,在webroot下面新建立一个script的文件夹,导入jquer文件 接下来 ...
- python 2 与python 3区别汇总
python 2 与python 3区别汇总 一.核心类差异1. Python3 对 Unicode 字符的原生支持.Python2 中使用 ASCII 码作为默认编码方式导致 string 有两种类 ...
- druid18.1版本sing-server启动报错
正文 昨天下载了一个18版本的driud打算在虚拟机探究一下,然后按照官网的启动方式启动了,每个失败.官网是/bin/start-micro-quickstart,我们去看他的单机启动配置 http: ...
- 使用TimerTask创建定时任务
使用TimerTask创建定时任务,打包之后应用于linux系统 step1:创建java项目 step2:代码实现 定时任务实现类CreateTask.java是打印操作者的名字 配置准换类Conf ...
- 并发07--线程池及Executor框架
一.JAVA中的线程池 线程池的实现原理及流程如下图所示: 如上图所示,当一个线程提交到线程池时(execute()或submit()),先判断核心线程数(corePoolSize)是否已满,如果未满 ...