PHP cURL在发送数据后提供SSL错误?

时间:2014-04-23 10:33:51

标签: php post curl ssl ssl-certificate

这是我的代码:

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $apiUrl);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $postValues);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$result = curl_exec($ch);

现在$ result是" false"并且curl_error()向我显示SSL-Error" Peer的证书发行者无法识别。"。 但是虽然存在这个错误,但是帖子数据已经发送到$ apiUrl。

这是对的吗?错误或功能? ;)

如何改进此功能以防止将数据发送到不安全的服务?

提前致谢! :)

3 个答案:

答案 0 :(得分:0)

这有两个解决方案......

解决方案 - 1

如果您想跳过检查SSL证书使用....

curl_setopt ($ch, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt ($ch, CURLOPT_SSL_VERIFYPEER, 0); 

解决方案 - 2

如果您有证书,请使用....

curl_setopt ($ch, CURLOPT_CAINFO, "PATH_TO/cacert.pem");

感谢。

答案 1 :(得分:0)

这是不正确的;当SSL证书出现问题时,cURL不会发送任何数据。

(我刚刚测试了与本地脚本的连接 - 当第一个脚本在连接到它时遇到SSL错误时,第二个脚本没有运行。)

答案 2 :(得分:0)

最后我找到了数据传输的原因,尽管存在卷曲错误! 有一个重定向到另一个位置并且“followlocation”处于活动状态,错误发生在重定向的网站上! 因此数据已发送到$ apiUrl并已处理完毕。在此之后,卷曲调用已被重定向并出现错误。

我对逻辑的信任已经恢复:D