get_headers(): SSL 操作失败,代码为 1

php
2022-08-31 00:36:58

嘿,我试图获取网址的标题信息,

当我使用协议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));

答案 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在评论中指出这一点。


答案 2

因为您安装的 SSL 证书没有中间密钥


推荐