php curl访问调用https时报错解决办法

PHP 调用CURL提示错误:SSL certificate problem, verify that the CA cert is OK. Details: error:14090086:SSL routines:ssl3_get_server_certificate:certificate verify failed。这个是因为证书过期导致的。
SSL-ERROR

需要到 http://curl.haxx.se/ca/cacert.pem 下载信任证书。下载后,使其生效有两种方法:

第一种方法:修改 php.ini,找到 [curl]节点,如果没有,可以在php.ini底部添加。

[curl]
;修改为 http://curl.haxx.se/ca/cacert.pem 保存的路径
curl.cainfo="d:/php/cacert.pem"

第二种方法:保存到 程序所在目录,在调用curl的时候,增加一句:

<?php
    
    #cacert.pem 到 http://curl.haxx.se/ca/cacert.pem 下载
    curl_setopt($curl, CURLOPT_CAINFO, dirname(__FILE__) . '/cacert.pem');
?>

 

可以使用下面代码,自动识别https或http

function curlPost($url, $data, $timeout = 30)
 {
     $ssl = substr($url, 0, 8) == "https://" ? TRUE : FALSE;
     $ch = curl_init();
     $opt = array(
             CURLOPT_URL     => $url,
             CURLOPT_POST    => 1,
             CURLOPT_HEADER  => 0,
             CURLOPT_POSTFIELDS      => (array)$data,
             CURLOPT_RETURNTRANSFER  => 1,
             CURLOPT_TIMEOUT         => $timeout,
             );
     if ($ssl)
     {
         $opt[CURLOPT_SSL_VERIFYHOST] = 1;
         $opt[CURLOPT_SSL_VERIFYPEER] = FALSE;
     }
     curl_setopt_array($ch, $opt);
     $data = curl_exec($ch);
     curl_close($ch);
     return $data;
 }
 $data = curlPost('https://www.111cn.net', array('p'=>'hello'));
 echo ($data);
 

时间: 2024-10-23 05:08:11

php curl访问调用https时报错解决办法的相关文章

代码-c# 访问Exchange初始化时报错

问题描述 c# 访问Exchange初始化时报错 RunspaceConfiguration runspaceConfig = RunspaceConfiguration.Create(); PSSnapInException snapEX = null; PSSnapInInfo snampInfo = runspaceConfig.AddPSSnapIn("Microsoft.Exchange.Management.PowerShell.Admin", out snapEX); R

java调用python时报错。

问题描述 java调用python时报错. 我在用java调用一个main.py文件时报错,但是在同样的路劲下调用搜狗的.exe文件能运行 public static void main(String[] args) { Runtime rn = Runtime.getRuntime(); Process p = null; try { // PythonInterpreter interpreter = new PythonInterpreter(); // InputStream filep

eclipse导入appcompat项目报错解决办法

eclipse导入appcompat项目报错解决办法 我们在eclipse导入开源项目后,经常会发现找不到类似Theme.AppCompat.Light.DarkActionBar的style,解决办法也比较简单,就是导入com.android.support:appcompat-v7包,不过又两点需要注意: 不能只导入appcompat-v7.jar包,而是要导入appcompat-v7项目 因为这个项目包含有资源文件,只导入jar包没有效果,这个项目地址是在: -\android-sdk\e

Android 调用notifyDataSetChanged方法失败解决办法

Android 调用notifyDataSetChanged方法失败解决办法 如果使用ListView.GridView等进行数据展示,当绑定的数据有了更新的时候,需要实时刷新ListView,即调用Adapter的notifyDataSetChanged方法,但是很多人在调用之后会发现ListView是数据并没有刷新,这是什么原因呢?下面将对其进行详细解释. 1.数据源没有更新,调用notifyDataSetChanged无效. 2.数据源更新了,但是它指向新的引用,调用notifyDataS

相同目录下的类互相调用编译时报错

问题描述 新手请教简单问题:源码目录:$HOME/myweb/src/编译目录:$HOME/myweb/WEB-INF/classes在源码目录下同时写了两个类A.B,B类中使用到A对象,A已经编译成功,但是B类编译时报错找不到A类.编译方法:javac-classpath$HOME/myweb/WEB-INF/classes-classpath$TOMCAT_HOME/lib/servlet-api.jar-d$HOME/myweb/WEB-INF/classes$HOME/myweb/src

xtrabackup 工具备份mysql 5.7以及常见报错解决办法

由于之前服务器安装的xtrabackup比较老的版本,不支持mysql 5.7的热备,需要升级下版本或新服务器部署2.4.1版本.这里我们下载官网https://www.percona.com/downloads/XtraBackup/ 最新版2.4.4 工具,安装并备份mysql 5.7. 一,安装XtraBackup.这里不多做解释了,之前文章有介绍如何安装. 这里主要说下常见报错,比如我这里今天遇到两个: error: Failed dependencies:  libev.so.4()(

[Unity3d]Unity web平台 SecurityException报错解决办法

最近被一个问题困扰了好久,连续三天都一直在想办法解决,各种能参考的资料都看了,包括硬着头皮看全英文的官网,努力寻求解决办法,昨晚搞到凌晨深夜两点可还是失望的离开了办公室,到底是什么问题呢?我相信如果Unity3D做网络游戏或者动态加载资源的同志们都会碰到,那就是Unity3d动态加载资源然后切换到web平台会报错,关于security的一个错误,官方的解释是:http://docs.unity3d.com/Documentation/Manual/SecuritySandbox.html,努力看

PHP empty函数报错解决办法

 这篇文章主要介绍了PHP empty函数在检测一个非变量情况下报错的解决办法,需要的朋友可以参考下 PHP开发时,当你使用empty检查一个函数返回的结果时会报错:Fatal error: Can't use function return value in write context   例如下面的代码:    代码如下: <?php  echo empty(strlen('test'));   转到PHP手册里面查看,在empty函数描述的地方有以下文字:   代码如下:Note :  e

ASP.NET中不使用LINQ访问 mssql server 2005数据库解决办法

asp教程.net中不使用linq访问 mssql server 2005数据库教程解决办法 asp.net教程应用程序的数据访问是通过ado.net完成的,ado.net可以使web应用程序从各种数据源中快速访问数据. 在asp.net中不使用linq访问数据库,而是通过写sql文直接访问microsoft sql server 2005 1.添加引用system.configuration,并在程序中使用命名空间using system.configuration. 2."configura