目录
之前不是写了一篇《宝塔计划任务提取网站地图(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")
我直接套上方法

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