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 官方文档(更多阅读)。