错误提示:
Warning: file_get_contents(): SSL operation failed with code 1. OpenSSL Error messages: error:14090086:SSL routines:ssl3_get_server_certificate:certificate verify failed in
本地系统是 Win7 。相同的 php 代码在另一台本地 Mac 电脑中测试没有问题,只有在 Win7 有这个错误。 而且按照网上已经可以找到的原因: php.ini 中配置: curl.cainfo=C:\wamp\xxxxxxx\cacert.pem openssl.cafile=C:\wamp\xxxxxxx\cacert.pem 等方法都试过,还是无效。
疑惑的就是:相同代码在本地 Mac 环境和远程服务器 linux 环境都可可以,在本地 Win7 环境下为什么不可以。 php.ini 配置也对比了,该开启的都开启了。
如下图:
1
UnisandK 2016-07-08 15:22:06 +08:00
|
2
eoo 2016-07-08 18:27:43 +08:00 via Android
用 CURL 有相应的处理 https 的参数
|
3
fcicq 2016-07-08 18:43:34 +08:00
OpenSSL 版本? 服务器是否开了 SNI?
|
4
cccRaim 2016-07-08 19:32:45 +08:00
既然提到 file_get_content 了,那我就再提一个问题,怎么处理非 200 的网页内容,好像不是 200 段的就直接不读取网页内容了,让我遵从 restful api 的人非常尴尬
|
5
yexiaoxing 2016-07-08 20:43:33 +08:00
|
6
cccRaim 2016-07-08 21:01:10 +08:00
@yexiaoxing 果然还是要用 curl ,总之谢谢了
|
7
yangxin0 2016-07-08 21:56:40 +08:00 via iPhone 1
服务器证书对应 root 证书你没有配置好
|
8
xiaoyong OP @yangxin0 服务器是第三方的,我控制不了。只能访问他们提供的 URL ,即使在浏览器打开这个 URL 默认也是不显示的,提示证书有问题。
|
9
chaegumi 2016-07-09 06:27:02 +08:00
昨天我一台机子用 composer 有出这样的错误,是 php5.5.7 ,解决不了,后边我又安装了一个 php7 ,用 php7 跑 composer 就好了,也不知道啥回事
|
10
rainfox 2019-03-13 12:45:07 +08:00 1
服务器 下载这个证书,http://curl.haxx.se/ca/cacert.pem
php.ini 配置 openssl.cafile = "/etc/ssl/certs/cacert.pem"//你实际下载证书的路径 重启 php 即可 |
11
irudder 2019-04-02 09:30:35 +08:00
遇到同样的问题
解决办法: $stream_opts = [ "ssl" => [ "verify_peer"=>false, "verify_peer_name"=>false, ] ]; $response = file_get_contents("https://www.example.com", false, stream_context_create($stream_opts)); |