所以我一直在这里找到很多关于PHP,cURL和SSL的互联网上的帖子。我遇到了一个我没有看到的问题。
显然,如果我设置SSL_VERIFYPEER / HOST以盲目接受我可以让它工作,但我想使用我的证书来验证连接。
所以这里有一些代码:
$options = array(
CURLOPT_URL => $oAuthResult['signed_url'],
CURLOPT_RETURNTRANSFER => TRUE,
CURLOPT_HEADER => 0,
CURLOPT_SSL_VERIFYPEER => TRUE,
CURLOPT_SSL_VERIFYHOST => 2,
CURLOPT_CAINFO => getcwd() . '\application\third_party\certs\rootCerr.crt'
);
curl_setopt_array($ch, $options);
try {
$result = curl_exec($ch);
$errCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
if (curl_getinfo($ch, CURLINFO_HTTP_CODE) != 200) {
throw new Exception('<strong>Error trying to ExecuteWebRequest, returned: '.$errCode .'<br>URL:'.$url . '<br>POST data (if any):</strong><br>');
}
curl_close($ch);
} catch (Exception $e) {
//print the error stuff
}
返回的错误代码是0 ...这意味着一切都是A-OK ...但是因为没有任何东西回到屏幕上......我很确定它不起作用。
任何?
答案 0 :(得分:0)
您提取的$ errCode是HTTP代码,当OK时为200-299。获得0表示由于问题或类似原因而未设置。
你应该在curl_exec()之后使用curl_errno()来判断事情是否正常。 (您无法轻松检查curl_exec()返回代码中的错误,因为您启用了CURLOPT_RETURNTRANSFER,这使得该函数返回它设置为get的传输内容。当然,返回的内容也不应该返回是事情失败的好指标。)
答案 1 :(得分:0)
我已经按照你的指示使用CURLOPT_CAINFO实现了LibCurl Certs ......
然而,通过提供文件名本身并不够好......它也在我身上崩溃了。
对我来说,文件是通过相对路径引用的...此外,我还必须确保证书也是Base64格式。然后一切都顺利进行..