广告位招租919838898

计划任务执行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("http://www.5che2.com/sitemap.xml")

我直接套上方法

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

这样就可以成功执行了。

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。

给TA打赏
共{{data.count}}人
人已打赏
广告位招租919838898
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索