计划任务执行PHP出现 OpenSSL Error messages

之前不是写了一篇《宝塔计划任务提取网站地图(sitemap)链接,进行百度主动推送》吗?

但是遇到了一个问题。计划任务执行PHP文件的时候,就出现类似与这种的报错

PHP Warning:  file_get_contents(): Failed to enable crypto in ......
PHP Warning:  file_get_contents......: failedream: operation failed in ......
PHP Warning:  file_get_contents(): SSL operatwith code 1. OpenSSL Error messages:
error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verin ......

这也就意味着没有成功执行PHP文件。

在百度上找了些方法。有3种:

1.将证书下载到服务器,然后配置php.ini 中的openssl.cafile ,openssl.cafile = “/etc/ssl/certs/cacert.pem”//在这里加上你的SSL路径。

但因为宝塔面板上的参数,我也不敢贸然修改。(这里只一个PHP版本多个网站同时使用)

2.使用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"));
?>

3.使file_get_contents()函数跳过https验证

之前的PHP文件中,确实有 file_get_contents() 这个函数,所以我就直接把程序做了个修改。

例:

$stream_opts = [
    "ssl" => [
        "verify_peer"=>false,
        "verify_peer_name"=>false,
    ]
]; 

$response = file_get_contents("https://xxx.xxx.xxx",false, stream_context_create($stream_opts));

原代码:

$xml_string = file_get_contents("https://www.xingkongweb.com/sitemap.xml")

我直接套上方法

这样就可以成功执行了。

经验

了解交互设计体验,网站建设必备

2021-11-13 13:00:04

经验

域名被腾讯标红? 如何防止?

2022-1-9 18:16:47

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索