在使用 phpbrew 安装 PHP 7.4 时,可能会遇到与 OpenSSL 相关的编译错误,尤其是在系统默认安装了 OpenSSL 3.0 或更高版本的情况下。这是因为 PHP 7.4 及其之前的版本可能与 OpenSSL 3.0 存在兼容性问题,导致编译过程中出现错误。
以下步骤提供了一种解决方案,通过指定 OpenSSL 1.1 的路径来解决此问题。
步骤 1: 确认 OpenSSL 1.1 已安装
首先,需要确认你的系统上已经安装了 OpenSSL 1.1。如果尚未安装,请使用相应的包管理器进行安装。例如,在 macOS 上,可以使用 Homebrew:
立即学习“PHP免费学习笔记(深入)”;
brew install openssl@1.1
步骤 2: 设置 OpenSSL 环境变量
接下来,需要设置 OPENSSL_CFLAGS 和 OPENSSL_LIBS 环境变量,指向 OpenSSL 1.1 的安装路径。可以使用以下命令:
export OPENSSL_CFLAGS="-I/usr/local/opt/openssl@1.1/include" export OPENSSL_LIBS="-L/usr/local/opt/openssl@1.1/lib -lcrypto -lssl"
请注意,/usr/local/opt/openssl@1.1 是 OpenSSL 1.1 在使用 Homebrew 安装后的默认路径。如果你的安装路径不同,请相应地修改上述命令。
步骤 3: 使用 phpbrew 安装 PHP 7.4
现在,可以使用 phpbrew 安装 PHP 7.4 了。建议使用 +default 选项,以启用常用的扩展:
phpbrew install 7.4 +default
步骤 4: 清理旧版本(可选)
如果问题仍然存在,可以尝试先卸载 OpenSSL 3.0,然后再执行上述步骤。但是,请注意,卸载 OpenSSL 3.0 可能会影响系统上其他依赖它的应用程序。
注意事项:
- 确保环境变量设置正确,指向正确的 OpenSSL 1.1 安装路径。
- 如果之前安装过 PHP 7.4 失败,可以先使用 phpbrew clean 7.4 命令清理残留的编译文件。
- 在安装过程中,可以通过 tail -F ‘/Users/i.pishchylin/.phpbrew/build/php-7.4.25/build.log’ 命令实时查看编译日志,以便及时发现问题。请根据实际路径修改命令。
总结:
通过设置正确的 OPENSSL_CFLAGS 和 OPENSSL_LIBS 环境变量,可以绕过 OpenSSL 3.0 的兼容性问题,成功完成 PHP 7.4 的安装。这个方法的核心在于强制 phpbrew 使用 OpenSSL 1.1 的库和头文件,从而避免编译错误。在遇到类似问题时,可以尝试类似的思路,即指定特定版本的库文件路径来解决兼容性问题。
评论(已关闭)
评论已关闭