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问题解决的更多相关文章

  1. xcode解决问题dyld: Library not loaded

    一.问题 编译通过,联机调试时,应用启动闪退,XCODE的Output出现提示: dyld: Library not loaded: /System/Library/Frameworks/AdSupp ...

  2. XCode 添加自定义framework运行时出现dyld: Library not loaded的解决方法

    XCode添加自定义framework运行时出现dyld: Library not loaded的解决方法 在使用自定义的framework运行时,会出现如下的错误: dyld: Library no ...

  3. 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 ...

  4. 解决 dyld: Library not loaded:Reason: image not found

    在使用第三方framework时,直接把framework拖到项目中,运行时报错: dyld: Library not loaded: @rpath/ZipZap.framework/ZipZap R ...

  5. Swift真机调试时报错dyld: Library not loaded: @rpath/libswiftCore.dylib

    dyld: Library not loaded: @rpath/libswiftCore.dylib Referenced from: /private/var/mobile/Containers/ ...

  6. [iOS Xcode8报错]dyld: Library not loaded: /System/Library/Frameworks/UserNotifications.framework/UserN

    [iOS Xcode8报错]dyld: Library not loaded: /System/Library/Frameworks/UserNotifications.framework/UserN ...

  7. 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 ...

  8. iOS dyld: Library not loaded 报错解决

    Xcode 用的是10.1 版本打的苹果包在 ios系统10.0 以上可以正常运行 但是系统9.3的手机安装后直接运行就崩溃 后来插上电脑联调 报错 dyld: Library not loaded: ...

  9. 关于dyld: Library not loaded

    在接入智凡迪的sdk过程中,遇到以下问题: dyld: Library not loaded: @rpath/SDKFramework.framework/SDKFramework   Referen ...

随机推荐

  1. asp.net Mvc 路由详解,非常详细.

    关于路由的理解 为什么要定义路由?路由的定义在开发中的工作量非常小,但是非常重要,因为任何请求都离不开路由. 各个电商网站的 URL 使用非常灵活,都离不开路由的定义,请大家参考几家电商的 URL 如 ...

  2. 什么了解suite集合实现

    Testsuite继承BaseTestSuite其实内部的东西不是太多--生成suite集合的逻辑主要如下-我这里没有扒源码-因为他最终生成的TestsSuite关联的模块比较多--如果贴源码出来-- ...

  3. lw_oopc(c语言实现面向过程宏文件)解析

    一:计算结构体成员变量偏移量宏 #ifdef LW_OOPC_USE_USER_DEFINED_OFFSETOF // 有些环境可能不支持,不过,这种情形极少出现 #define LW_OOPC_OF ...

  4. docker 镜像删除

    (我们以删除 php-fpm 这个镜像为例子) 一.查看镜像的 ID [root@localhost ~]# docker images REPOSITORY TAG IMAGE ID CREATED ...

  5. idea安装docker插件

    Preferences->Plugins 根据上图安装docker插件,安装完成后可使用idea来管理docker项目了.docker运行项目请参加"Docker开发环境搭建" ...

  6. Spring Boot 2.x基础教程:Spring Data JPA的多数据源配置

    上一篇我们介绍了在使用JdbcTemplate来做数据访问时候的多数据源配置实现.接下来我们继续学习如何在使用Spring Data JPA的时候,完成多数据源的配置和使用. 添加多数据源的配置 先在 ...

  7. Wireshark论证TCP3次握手的过程

    wireshark过滤条件:ip.addr == 120.79.36.180 千万别写成 ip.dst == 120.79.36.180 ,这样子就看不到服务器给我们返回的包了 此时,在浏览器输入12 ...

  8. Qt布局的简单介绍

    1  介绍 参考视频:https://www.bilibili.com/video/BV1XW411x7NU?p=25 布局的好处:布局之后,改变主窗口大小,其余窗口可以自适应. 2  布局分类 垂直 ...

  9. 6、struct2使用servlet的api函数

    方法一: Struts2的Action访问Servlet API 可以通过实现装配接口没,完成对Servlet API的访问 * ServletRequestAware取得HttpServletReq ...

  10. 7-4 是否同一棵二叉搜索树 (25分) JAVA

    给定一个插入序列就可以唯一确定一棵二叉搜索树.然而,一棵给定的二叉搜索树却可以由多种不同的插入序列得到. 例如分别按照序列{2, 1, 3}和{2, 3, 1}插入初始为空的二叉搜索树,都得到一样的结 ...