Apache,PHP 5.6 或 7.0:未加载库:openssl/lib/libcrypto.1.0.0.dylib 使用 Homebrew

Apache, PHP 5.6 or 7.0: Library not loaded: openssl/lib/libcrypto.1.0.0.dylib using Homebrew

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

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 中删除,在 this guide 之后,我不得不使用旧的已弃用的水龙头并安装了 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 运行?

解决方法是安装旧版本的 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 不适用于上面提到的较早的 64.3 版本的 icu4c 库,每当您需要切换到这些版本时PHP 版本,例如,通过使用此 easy brew PHP switcher script,您还必须通过 运行 宁此命令切换 icu4c 库的版本:

brew switch icu4c 67.1

资源