curl已启用但未在xampp 3.2.1中获得任何结果

时间:2015-08-04 07:22:30

标签: php xampp

我正在尝试将sendgrid API保留到我的自定义网站中。请参阅此Remove workitems permanently

现在我试图在我的帐户上获取所有收件人列表我安装了xampp 3.2.1版本并启用了curl我通过phpinfo()函数检查但是我没有得到任何结果,这个相同的代码是在我的主1and1服务器上正常工作但没有进入xampp localhost

 <?php
  $url = 'https://api.sendgrid.com/api/newsletter/lists/get.json';
  $user = 'x';
  $pass = 'y';

 $params = array(
   'api_user'  => $user,
   'api_key'   => $pass,
  );
 $request =  $url;


 $session = curl_init($request);

 curl_setopt ($session, CURLOPT_POST, true);

 curl_setopt ($session, CURLOPT_POSTFIELDS, $params);

 curl_setopt($session, CURLOPT_HEADER, false);

 curl_setopt($session, CURLOPT_SSLVERSION, CURL_SSLVERSION_TLSv1_2);
 curl_setopt($session, CURLOPT_RETURNTRANSFER, true);


 $response = curl_exec($session);
 curl_close($session);


 print_r($response);
  ?>

3 个答案:

答案 0 :(得分:3)

哇最后我得到了解决这个问题的方法。我在项目代码中添加了单行代码。

curl_setopt($session, CURLOPT_SSL_VERIFYPEER, false);

在此代码行下方

$session = curl_init($request);

请参阅此链接:

http://unitstep.net/blog/2009/05/05/using-curl-in-php-to-access-https-ssltls-protected-sites/

答案 1 :(得分:0)

我尝试注册为自己测试,但它不会让我超过验证阶段。对于大多数对https的curl调用,我包含以下内容 - 这可能有所帮助。

$cacert='c:/wwwroot/cacert.pem'; 
/* You can download cacert.pem from the interwebs easily. Change the path to suit own environment */
if( parse_url( $request,PHP_URL_SCHEME )=='https' ){
    curl_setopt( $curl, CURLOPT_SSL_VERIFYPEER, FALSE );
    curl_setopt( $curl, CURLOPT_SSL_VERIFYHOST, 2 );
    curl_setopt( $curl, CURLOPT_CAINFO, realpath( $cacert ) );
}

答案 2 :(得分:0)

在php.ini中设置openssl.cafile和openssl.capath并重启apache

默认情况下,对等验证为真,一旦设置了上述值,验证就会通过。您可以通过将CURLOPT_SSL_VERIFYPEER设置为false

来关闭此验证