我使用Windows Server 2008 R2(带IIS),PHP 5.6.0和cURL 7.36.0来测试PayPal的TLS测试网址:
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'https://tlstest.paypal.com');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_FAILONERROR, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, true);
curl_setopt($ch, CURLOPT_SSLVERSION, 6); // CURL_SSLVERSION_TLSv1_2
curl_setopt($ch, CURLOPT_CAINFO, dirname(__FILE__) . '\cacert.pem');
$result = curl_exec($ch);
curl_close($ch);
当我使用http://curl.haxx.se/docs/caextract.html中的CURLOPT_CAINFO
和cacert.pem
时,它可以正常工作,我得到了:
PayPal_Connection_OK
当我不使用CURLOPT_CAINFO
时,我收到此错误:
SSL证书问题:无法获得本地颁发者证书
我试过这个:
cacert.pem
然而,这没有任何区别,我仍然必须使用CURLOPT_CAINFO
才能发挥作用。
有什么方法可以在我们的Windows服务器上安装所有这些根证书,这样我就不必每次打电话都使用CURLOPT_CAINFO
和cacert.pem
。?
答案 0 :(得分:3)
您可以利用php.ini设置cacert.pem所在位置的绝对路径。
指令是contextMenuHelper = new TableViewContextMenuHelper(tableView);
// Adding additional menu options
MenuItem exportMenuItem = new MenuItem("Export...");
contextMenuHelper.getAdditionalMenuItems().add(exportMenuItem);
设置它,或者至少读取它的值并将文件放在正确的位置。