Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/257.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SSL/TLS操作失败PHP5.6-curl-ca-bundle.crt&;卡塞特·佩姆_Php_Apache_Ssl_Curl_Xampp - Fatal编程技术网

SSL/TLS操作失败PHP5.6-curl-ca-bundle.crt&;卡塞特·佩姆

SSL/TLS操作失败PHP5.6-curl-ca-bundle.crt&;卡塞特·佩姆,php,apache,ssl,curl,xampp,Php,Apache,Ssl,Curl,Xampp,这已经让我发疯好几个星期了 我通常在CentOS 7设备上进行开发,但最近我开始在Windows 10上使用Xampp,并使用CentOS设备将代码提交到客户端测试 在linux机器上一切正常,但在Windows上,任何SSL/TLS调用都会失败,从我可以看出,这是由于新的PHP5.6功能在默认情况下验证对等证书和主机名- 我已经在网上阅读了几乎所有的操作指南,就我所知,我已经尝试了所有的方法,但都一无所获 有人能帮忙吗 php.ini中启用了ExtensionExtension=php\u o

这已经让我发疯好几个星期了

我通常在CentOS 7设备上进行开发,但最近我开始在Windows 10上使用Xampp,并使用CentOS设备将代码提交到客户端测试

在linux机器上一切正常,但在Windows上,任何SSL/TLS调用都会失败,从我可以看出,这是由于新的PHP5.6功能在默认情况下验证对等证书和主机名-

我已经在网上阅读了几乎所有的操作指南,就我所知,我已经尝试了所有的方法,但都一无所获

有人能帮忙吗

php.ini中启用了Extension
Extension=php\u openssl.dll
,Extension=php\u curl.dll也是如此

我还下载了cert文件,并将以下内容添加到我的php.ini中

curl.cainfo = "‪C:\xampp\php\certs\curl-ca-bundle.crt"
curl.capath = "‪C:\xampp\php\certs\"


openssl.cafile= "‪C:\xampp\php\certs\curl-ca-bundle.crt"
openssl.capath= "‪C:\xampp\php\certs\"
我得到的错误是:

对于使用TLS的SMTP呼叫:

PHP Warning:  stream_socket_enable_crypto(): SSL operation failed with code 1. OpenSSL Error messages:
error:14090086:SSL routines:ssl3_get_server_certificate:certificate verify failed in W:\libraries\Zend\Mail\Protocol\Smtp.php on line 206
对于cURL调用:

API call to messages/send failed: error setting certificate verify locations: CAfile: ‪C:\xampp\php\certs\cacert.pem CApath: none
C:\xampp\php\certs\
目录的内容是:

ca-bundle.trust.crt
cacert.pem
curl-ca-bundle.crt
我重新启动了Apache,甚至尝试在命令行中使用curl.exe作为独立程序,这在请求HTTPS域时效果很好(不确定这是否相关,但我还是尝试了!)

我还尝试将以下内容添加到php.ini(并重新启动Apache),但没有效果

openssl.verify_peer= false
openssl.verify_peer_name = false

有什么想法吗?

错误消息
错误设置证书验证位置
来自libcurl本身,意味着它无法找到或打开指定的CAFile

在Windows上,我认为如果您从以下位置更改路径,它将起作用:

curl.cainfo = "‪C:\xampp\php\certs\curl-ca-bundle.crt"


OpenSSL可能也是如此,但我还没有测试确认。

发现这是一个权限问题,证书文件没有被读取-将
C:/xampp/php/certs/
文件夹移动到另一个位置(例如在我的用户目录中)解决了问题:)


HTH

您确定您没有使用PHP5.6而不是从未正式发布的PHP6吗?如果您感到绝望,请禁用它。。curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,false)@hanshenrik—理想情况下,我希望能够解决这个问题,而且我没有直接调用cURL,它是在我集成的API中使用的,所以不能在那里乱搞代码。不过还是要感谢。api是否提供了curl的直接句柄?没有,仍然会出现相同的错误,我们也重新启动了Apache:(
curl.cainfo = "‪C:/xampp/php/certs/curl-ca-bundle.crt"