file_get_contents 使用起来非常方便,在请求 https 协议内容时,遇到如下问题:
在调用 file_get_contents 获取一个 https 协议内容,遇到报错:
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 ...,及 Warning: file_get_contents(): Failed to enable crypto in ...,可以跳过 https 验证解决办法:
$stream_opts = [
"ssl" => [
"verify_peer"=>false,
"verify_peer_name"=>false,
]
];
$response = file_get_contents("https://xxx.xxx.xxx", false, stream_context_create($stream_opts));
之所以报这个的原因,是从 PHP 5.6.x 起,使用 SSL / TLS 时,流包装器现在默认验证对等证书和主机名,具体看 PHP 官方文档(更多阅读)。