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;}
大家可以试一下,如果遇到什么问题,欢迎一起交流。
