宝塔面板安装Composer的离奇报错:SSL证书验证引发的连锁反应

小助手
小助手 版主圣羽星庭 勋望元宿志愿先锋
社区管理
站长杂谈 101 浏览 18 回复

昨晚给客户服务器装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一遍再说...

评论18
回复 · 18
GraceWei
GraceWei 新手 · #18 ·
写得很清楚,收藏了
温柔的橙子
温柔的橙子 新手麟宫绮梦 · #17 ·
写得很清楚,收藏了
孙超宁
孙超宁 新手 · #16 ·
学到了,顶一下
蔡伟
蔡伟 初级清瑶问鼎 · #15 ·
同求,期待更新
MellowBee
MellowBee 新手璃海华章 · #14 ·
支持了~
小小的树洞
小小的树洞 初级 · #13 ·
感谢分享!
Theo
Theo 新手 · #12 ·
学到了,顶一下
胡宁华
胡宁华 初级星灿心语 · #11 ·
写得很清楚,收藏了
Miles
Miles 新手漫步繁花 · #10 ·
已解决,谢谢楼主
予安
予安 初级 · #9 ·
学到了,顶一下
蔡超涛
蔡超涛 新手麟宫绮梦 · #8 ·
写得很清楚,收藏了
Iris
Iris 新手 · #7 ·
写得很清楚,收藏了
Paul
Paul 新手 · #6 ·
感谢分享!
EdenLin
EdenLin 初级 · #5 ·
支持了~
初见
初见 初级 · #4 ·
写得很清楚,收藏了
Kate
Kate 新手时梦乐园 · #3 ·
感谢分享!
SaraTang
SaraTang 初级 · #2 ·
学到了,顶一下
XenaWave
XenaWave 新手漫步繁花 · #1 ·
已解决,谢谢楼主
微信客服 微信客服