嘿,我试着获取url的头信息,
当我使用http协议时,它可以正常工作,但当我使用https时,它不工作
网址:https://200.35.78.130/
Warning: get_headers(): SSL operation failed with code 1. OpenSSL Error messages: error:14090086:SSL routines:ssl3_get_server_certificate:certificate verify failed in
Warning: get_headers(): Failed to enable crypto in
Warning: get_headers(https://200.35.78.130/): failed to open stream: operation failed in /
这是我的代码
print_r(get_headers("https://200.35.78.130/", 1));
当您试图在没有有效SSL证书的情况下访问URL时,会发生此错误。您可以通过覆盖默认的流上下文来解决这个问题,这将影响所有后续的文件操作(包括远程URL)
<?php
stream_context_set_default( [
'ssl' => [
'verify_peer' => false,
'verify_peer_name' => false,
],
]);
print_r(get_headers('https://200.35.78.130/'));
或者,如果您使用的是PHP 7.1+,您可以使用stream_context_create
创建一个临时上下文,并将其直接传递给函数,以避免覆盖默认值:
$context = stream_context_create( [
'ssl' => [
'verify_peer' => false,
'verify_peer_name' => false,
],
]);
print_r(get_headers('https://200.35.78.130/', 0, $context));
感谢Matthijs Wessels在评论中指出这一点。
因为您安装的SSL证书没有中间密钥