宝塔面板安装Composer的离奇报错:SSL证书验证引发的连锁反应
昨晚给客户服务器装Composer时遇到个邪门问题:宝塔终端里直接运行安装命令死活报SSL证书错误,但同一台服务器用curl测试https请求却完全正常。排查两小时终于破案,记录下这个套娃式踩坑过程。
第一阶段报错非常直白:
curl error 60 while downloading https://getcomposer.org/installer: SSL certificate problem: unable to get local issuer certificate按照常规思路更新ca-certificates后依然无效,这时才注意到宝塔自带的php-cli环境有点古怪——明明用
whereis php查看到有两个php路径(/www/server/php/74/bin/php和/usr/bin/php),但面板终端默认调用的是后者。
关键转折点在于执行php -r "print_r(openssl_get_cert_locations());"时,发现默认php环境的openssl配置里default_cert_file指向的居然是/etc/pki/tls/cert.pem,而宝塔实际部署的证书在/www/server/panel/ssl目录下。手动把证书链合并后软链到对应位置,Composer终于能正常安装了。
事后总结三个教训:
1. 宝塔环境下的cli与web环境可能存在路径隔离
2. openssl证书验证失败时别急着关验证(网上很多教程让加--disable-tls)
3. 多php版本共存时,which php比面板提示更可靠
最后吐槽下:这种环境差异问题在云服务器上特别常见,下次再遇到SSL相关报错,准备先把整个证书验证链路strace一遍再说...
最新打赏

