协议访问的,跟普通的http协议不同,当使用php里的函数file_get_contents()来获取api里提供的数
据时,出现错误,使用的代码是这样的:
string(3) php
[1]=>
string(4) file
[2]=>
string(4) glob
[3]=>
string(4) data
[4]=>
string(4) http
[5]=>
string(3) ftp
[6]=>
string(3) zip
[7]=>
string(13) compress.zlib
[8]=>
string(14) compress.bzip2
[9]=>
string(4) phar
}
替代方案
发现错误,改正错误,这很简单,困难的是,发现错误后无法改正错误。我原本是想将这个脚本方法远
程主机上,但我无法修改远程主机的php配置,结果是,我无法使用这一方案,但我们不能在一棵树上
吊死,这条路走不通,看看有没有其它路。
另外一个我经常用的php里抓取内容的函数是curl,它比file_get_contents()更强大,提供了很多的可
选参数。对于访问https内容的问题,我们需要使用的curl配置参数是:
curl_setopt($ch, curlopt_ssl_verifypeer, false);
你可以从语义上看出,它是忽略/跳过了ssl安全验证。也许这不是一个很好的做法,但对于普通的场景
中,这几经足够了。
下面是利用curl封装的一个能访问https内容的函数:
function gethttps($url) {
$ch = curl_init();
curl_setopt($ch, curlopt_ssl_verifypeer, false);
curl_setopt($ch, curlopt_header, false);
curl_setopt($ch, curlopt_followlocation, true);
curl_setopt($ch, curlopt_url, $url);
curl_setopt($ch, curlopt_referer, $url);
curl_setopt($ch, curlopt_returntransfer, true);
$result = curl_exec($ch);
curl_close($ch);
return $result;
}