問題:
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擴展。