使用PHP curl进行IIS或Apache Web服务器身份验证

时间:2016-11-25 23:43:50

标签: php curl iis

我在Windows 10上使用PHP和curl设置了IIS和Apache Web Server。以下代码工作正常。

<?php

  $url = "http://domain.com";

  $ch = curl_init($url);
  curl_setopt($ch, CURLOPT_TIMEOUT, 30); //Timeout after 30 seconds
  curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

  $status_code = curl_getinfo($ch, CURLINFO_HTTP_CODE); //Get status code

  $response = curl_exec($ch);

  curl_close($ch);

  echo $response;

?>

当我添加身份验证时,它不起作用。

<?php

  $username = "username";
  $password = "password";
  $url = "https://domain.com/api/v2/orders/count";

  $ch = curl_init($url);
  curl_setopt($ch, CURLOPT_TIMEOUT, 30); //Timeout after 30 seconds
  curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_ANY);
  curl_setopt($ch, CURLOPT_USERPWD, "$username:$password");

  $status_code = curl_getinfo($ch, CURLINFO_HTTP_CODE); //Get status code

  $response = curl_exec($ch);

  curl_close($ch);

  echo $response;

?>

当我在GoDaddy服务器上运行时,此代码工作正常。

代码位于http://localhost/test.php
我有PHP NTS 7.0.13和cURL 7.51.0
IIS设置为FastCGI

1 个答案:

答案 0 :(得分:0)

未设置CA认证。

  • 转到[pathToYourPHP] \ extras \ ssl
  • 创建名为cacert.pem
  • 的文件
  • 转到CA certificates extracted from Mozilla
  • 点击cacert.pem
  • 复制内容并将其放入cacert.pem
  • 在php.ini中,将路径设置为curl.cainfo =“[pathToYourPHP] \ extras \ ssl \ cacert.pem”

注意:这也可以通过添加curl_setopt($ ch,CURLOPT_SSL_VERIFYPEER,FALSE)来绕过