php 使用cURL函数发送post请求返回false

1.发送post请求php代码:

<?php

$url = 'https://www.yiichina.com/extension/1009';
$data = ['fun'=>'post','time'=>'20191231'];

  /**
   * @param $data array post提交的参数
   * @param $url string post请求的链接
   */
function httpsPost($url, $data)
{
    if(is_array($data)){
        $params = http_build_query($data);
    }else{
        $params = (string)$data;
    }
    $curl = curl_init();
    curl_setopt($curl, CURLOPT_CONNECTTIMEOUT, 10);
    curl_setopt($curl, CURLOPT_TIMEOUT, 2);
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($curl, CURLOPT_HEADER, false);
    curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, true); //验证证书的真实性,https需设置
    curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 2); //指定要验证的内容:2:检查服务器证书
    curl_setopt($curl, CURLOPT_POST, 1);
    curl_setopt($curl, CURLOPT_POSTFIELDS, $params);
    curl_setopt($curl, CURLOPT_URL,$url);

    $res = curl_exec($curl);
    //******************************curl_exec()执行后打印错误信息
    var_dump(curl_error($curl));  //打印最近一次cURL操作的错误信息
    //******************************
    curl_close($curl);
    return $res;
}
print_r(httpsPost($url,$data));
错误提示1:string(63) "SSL certificate problem: unable to get local issuer certificate"

解决:
下载证书:点击下载证书
配置:打开php.ini
添加配置://curl.cainfo 写实际的证书文件路径
[SSL]
curl.cainfo = “D:\soft\phpstudy\php\cacert.pem”
openssl.cafile = “${curl.cainfo}”

错误提示2:string(21) “name lookup timed out”

环境docker中的linux centos6.x 容器
报错信息表示dns 域名查询超时
解决:
vim /etc/resolv.conf
nameserver 改为8.8.8.8

2.DNS 参考

点击查看DNS详解

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值