诡异的PHP curl POST请求失败问题

因客户需要,我将公司开发的HTTP版本的API进行了PHP封装。虽然1年多没写PHP了,不过大体步骤还是有数的。花了一晚上在OS X 10.10上用brew构建好了php 5.4 + nginx 1.6,然后花了半天左右把curl封装的https调用写好,花了不到半天全部测试完成跑通。没想到交给客户后发现没有办法请求成功。晚上回来研究了下,居然有这么多个坑!

1. php windows版本5.3.13和5.4.3版本内置的curl扩展有bug

坑。。。php本身提供的包居然无法调用。。。好在提供了补丁

2. php windows版本没有内置CA根证书

你妹啊!作为堂堂的生产用环境中的curl TMD居然不提供CA根证书!害的老子找了半天直到发现无法验证https证书合法性才想到这个问题。解决方案是访问这个链接来下载所需证书链,然后放置到代码可以访问到的地方

然后用curl_setopt配置好CA路径,注意不同平台的路径分隔符。

配置好后问题解决