file_get_contents(): SSL operation failed with code 1.

错误场景:

出现如下错误一般是服务器未正确配置好https证书,ssl验证不通过导致的。

Warning : file_get_contents(): SSL operation failed with code 1. OpenSSL Error messages:
error:1416F086:SSL routines:tls_process_server_certificate:certificate verify failed in XXX.php

解决方法一:

下载https证书到服务器,下载地址:http://curl.haxx.se/ca/cacert.pem

下载完成后,在php.ini 进行配置。找到php.ini,如博主使用的是phpstudy,php.ini位于C:phpstudy_proExtensionsphpphp7.3.4nts目录下,打开文件找到1925行,加入如下代码:

openssl.cafile = “C:/phpstudy_pro/Extensions/Nginx1.15.11/conf/ssl/cacert.pem”

注意,以上cacert.pem必须是你本地存储的路径。然后重启 php 即可。

解决方法二:

使用cURL 函数处理 https 的参数,获取文件内容:

<?php
     function getSSLPage($url) {
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_HEADER, false);
        curl_setopt($ch, CURLOPT_URL, $url);
        curl_setopt($ch, CURLOPT_SSLVERSION,3); 
        $result = curl_exec($ch);
        curl_close($ch);
        return $result;
      }
    var_dump(getSSLPage("https://xxx.xxx.xxx"));

解决方法三:

以上错误还有可能是SSL证书不一致造成的,可以使file_get_contents()函数跳过https验证:

$arrContextOptions = [
'ssl' => [
    'verify_peer' => false,
    'verify_peer_name' => false,
]];
$response = file_get_contents(
            $voucherImageBase64,false,stream_context_create($arrContextOptions));
file_put_contents($voucherImage, $response);

发表回复

后才能评论