
命令行curl与PHP cURL可能使用不同TLS后端、配置与CA证书来源。一个能访问并不能证明另一套信任链正确;应比较实际运行环境和目标证书,而不是通过关闭校验证书让错误暂时消失。
先确认错误确实与证书相关
保存PHP请求的具体错误、目标URL和重定向后地址,区分连接超时、主机名不符和未知颁发者。若系统curl实际走了另一代理或解析地址,也需要先统一条件。不要把全部外部HTTP失败都称为证书库旧了。
读取两端的库与配置
检查PHP cURL使用的libcurl、TLS后端和相关CA路径,以及命令行工具自身的版本与环境变量。不同SAPI还可能读取不同PHP配置。证书文件在磁盘存在不代表进程有权限读取,也不代表其内容完整或被当前请求使用。

修复信任来源而非跳过验证
按系统或主机支持方式维护可信CA,核对私有CA是否确为业务需要、源站证书链是否完整。不能随意下载陌生证书包或关闭verify peer等校验长期运行。若问题属于目标服务器少发中间证书,应先修目标链而不是给每个客户端加补丁。
以相同请求做双端回归
修正后在网站实际环境和命令行分别请求同一端点,核对校验仍开启且业务响应正确。再检查计划任务或容器是否需要独立更新。记录CA来源、更新责任与证书到期监测,避免只在一个临时shell里设置变量后就报告全站恢复。
关键区别

系统curl:独立程序与配置;不代表PHP能力相同。
PHP cURL:运行在网站环境;核对实际CA路径。
证书校验:验证身份与信任链;不应长期关闭。
怎样确认处理到位
PHP与所需CLI环境在开启证书校验下访问正常,CA来源可追溯,目标证书链和计划任务等依赖均按范围检查。
容易误判的边界
不宜使用忽略TLS验证作为最终方案;错误根因也可能在目标服务器、代理或重定向链,不仅是CA文件。
