Mac系统MAMP 3.5升级OpenSSL至1.1.1t遇阻求助
解决MAMP 3.5中PHP 5.6.10升级OpenSSL至1.1.1t的问题
你之前操作的核心错误
你复制的/usr/local/Cellar/openssl@1.1/1.1.1t/bin/openssl.so并非PHP可加载的扩展文件——这个目录下的是OpenSSL命令行工具,而PHP 5.6的OpenSSL支持是和PHP编译时绑定的,单纯添加扩展配置无法替换底层依赖的旧版OpenSSL库。
正确解决步骤
1. 定位brew安装的OpenSSL 1.1.1t路径
先执行命令获取官方软链路径(比直接用Cellar目录更稳定):
brew --prefix openssl@1.1
输出通常为/usr/local/opt/openssl@1.1
2. 替换MAMP PHP依赖的OpenSSL动态库
MAMP的PHP 5.6.10通过动态链接调用OpenSSL库,我们需要替换它指向的旧库:
- 进入MAMP PHP的库目录:
cd /Applications/MAMP/bin/php/php5.6.10/lib
- 备份旧版库文件:
mv libssl.0.9.8.dylib libssl.0.9.8.dylib.bak mv libcrypto.0.9.8.dylib libcrypto.0.9.8.dylib.bak
- 创建软链指向brew的新版库:
ln -s /usr/local/opt/openssl@1.1/lib/libssl.1.1.dylib libssl.0.9.8.dylib ln -s /usr/local/opt/openssl@1.1/lib/libcrypto.1.1.dylib libcrypto.0.9.8.dylib
3. 验证版本并重启服务
- 重启MAMP的Apache/NGINX服务
- 查看phpinfo()页面,检查
OpenSSL Version字段,应该显示为1.1.1t - 若仍未生效,可通过命令行验证:
/Applications/MAMP/bin/php/php5.6.10/bin/php -i | grep "OpenSSL Version"
4. 配置PHPMailer强制使用TLS 1.2
在PHPMailer代码中明确指定TLS版本,避免自动降级:
$mail->SMTPSecure = 'tls'; $mail->SMTPAutoTLS = true; $mail->SMTPOptions = [ 'ssl' => [ 'ciphers' => 'TLSv1.2', 'protocol' => 'TLSv1.2', // 若遇到证书验证问题,可临时关闭以下两项,生产环境建议开启 'verify_peer' => false, 'verify_peer_name' => false ] ];
注意事项
- PHP 5.6属于已停止维护的旧版本,与OpenSSL 1.1.1t可能存在兼容性隐患,务必完成全功能测试后再投入生产。
- 后续通过brew更新openssl@1.1时,需要重新执行软链创建操作,因为版本号可能变更。
内容的提问来源于stack exchange,提问作者Flex60460
相关产品推荐
相关产品推荐

