问题:
file_get_contents($url) 获取不到数据,尽管URL地址正确,函数使用正确。如下代码
$url = "https://www.baidu.com";
$html = file_get_contents($url);
echo $html;
分析解决:
百思不得解,百度了很多解决方法(很多都只是解决某特定问题),但解决不了目前的问题。
之后换了好几个url测试,终于发现上面 $url 是HTTPS地址, file_get_contents() 是能正常获取到HTTP地址的内容,类似 http://www.baidu.com ,所以应该和PHP的SSL配置有关。
然后从同事那拷贝了同版本的 php.ini ,用 SVN 自带的文本比较功能,和我本地 php.ini 比较,发现本地 php.ini 中 extension=php_openssl.dll 注释掉了,没开。果断开启。
重启Apache后, file_get_contents() 马上好使了。
总结:
发现 file_get_contents 获取不到 HTTPS地址 内容时,首先确定PHP是否开启SSL扩展。