首页 > 解决方案 > Apache、PHP 5.6 或 7.0:未加载库:openssl/lib/libcrypto.1.0.0.dylib 使用 Homebrew

问题描述

我正在尝试在 macOS 10.15 Catalina 上的 Apache httpd.conf 配置文件中加载 PHP 5.6 或 PHP 7.0 模块。但是在终端中使用启动 Apache 服务器时我收到sudo apachectl start以下错误:

httpd: Syntax error on line 187 of /private/etc/apache2/httpd.conf: Cannot load /usr/local/opt/php@5.6/lib/httpd/modules/libphp5.so into server: dlopen(/usr/local/opt/php@5.6/lib/httpd/modules/libphp5.so, 10): Library not loaded: /usr/local/opt/openssl/lib/libcrypto.1.0.0.dylib\n Referenced from: /usr/local/opt/php@5.6/lib/httpd/modules/libphp5.so\n  Reason: image not found

由于 PHP 版本 5.6、7.0 和 7.1 已被弃用并从 Homebrew 中删除,按照本指南,我不得不使用旧的弃用水龙头并通过运行安装 PHP 5.6 和 7.0:

brew tap exolnet/homebrew-deprecated
brew install php@5.6
brew install php@7.0

为了获得完整的信息,我尝试了 macOS 附带的 Apache 和通过 Homebrew 安装的最新 Apache 2.4.43,但这应该没什么区别。

所以问题是,如何解决这些错误并使用 Homebrew 在 macOS 上运行 PHP 5.6 和 7.0?

标签: phpmacosapacheopensslhomebrew

解决方案


解决方案是安装旧版本的 openssl 库。更具体地说,PHP 5.6 和 php 7.0 需要 openssl 1.0.2,您可以通过 Homebrew 在终端中运行以下命令来安装它:

brew install https://raw.githubusercontent.com/Homebrew/homebrew-core/8b9d6d688f483a0f33fcfc93d433de501b9c3513/Formula/openssl.rb
brew switch openssl 1.0.2t

但是,在运行上述之后,当使用 PHP 5.6、php 7.0 或 php 7.1 时,可能会出现另一个“Library not loaded”错误。特别是这个:

httpd: Syntax error on line 183 of /usr/local/etc/httpd/httpd.conf: Cannot load /usr/local/opt/php@5.6/lib/httpd/modules/libphp5.so into server: dlopen(/usr/local/opt/php@5.6/lib/httpd/modules/libphp5.so, 10): Library not loaded: /usr/local/opt/icu4c/lib/libicui18n.64.dylib\n  Referenced from: /usr/local/opt/php@5.6/lib/httpd/modules/libphp5.so\n  Reason: image not found

在这里,需要另一个较旧的库,在这种情况下为 icu4C。解决方案是运行以​​下命令:

brew install https://raw.githubusercontent.com/Homebrew/homebrew-core/a806a621ed3722fb580a58000fb274a2f2d86a6d/Formula/icu4c.rb
brew switch icu4c 64.2

切换到 PHP 7.2、PHP 7.3 或 PHP 7.4 的注意事项

由于 PHP 7.2、PHP 7.3 和 PHP 7.4 不能与上面提到的 icu4c 库的旧版本 64.3 一起使用,因此每当您需要切换到这些 PHP 版本时,例如,通过使用这个简单的 brew PHP 切换器脚本,您还拥有通过运行以下命令切换 icu4c 库的版本:

brew switch icu4c 67.1

资源


推荐阅读