广告投放

计划任务执行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.zz2zz.com/sitemap.xml")

    我直接套上方法

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

    这样就可以成功执行了。

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

    给TA打赏
    共{{data.count}}人
    人已打赏
    广告位招租919838898
    0 条回复 A文章作者 M管理员
      暂无讨论,说说你的看法吧
    个人中心
    购物车
    优惠劵
    今日签到
    有新私信 私信列表
    搜索