|
錯(cuò)誤: Warning: fopen() [function.fopen]: Unable to find the wrapper "https" - did you forget to enable it when you configured php?
解決方案有3:
1.windows下的php,只需要到php.ini中把extension=php_openssl.dll前面的;刪掉,重啟服務(wù)就可以了。
2.linux下的php,就必須安裝openssl模塊,安裝好了以后就可以訪問(wèn)了。
3.如果服務(wù)器你不能修改配置的話,那么就使用curl函數(shù)來(lái)替代file_get_contents函數(shù),當(dāng)然不是簡(jiǎn)單的替換啊。還有相應(yīng)的參數(shù)配置才能正常使用curl函數(shù)。
對(duì)curl函數(shù)封裝如下:
復(fù)制代碼 代碼如下:
function http_request($url,$timeout=30,$header=array()){
if (!function_exists('curl_init')) {
throw new Exception('server not install curl');
}
$ch = curl_init();
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HEADER, true);
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_TIMEOUT, $timeout);
if (!emptyempty($header)) {
curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
}
$data = curl_exec($ch);
list($header, $data) = explode("/r/n/r/n", $data);
$http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
if ($http_code == 301 || $http_code == 302) {
$matches = array();
preg_match('/Location:(.*?)/n/', $header, $matches);
$url = trim(array_pop($matches));
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HEADER, false);
$data = curl_exec($ch);
}
if ($data == false) {
curl_close($ch);
}
@curl_close($ch);
return $data;
}
php技術(shù):解決file_get_contents無(wú)法請(qǐng)求https連接的方法,轉(zhuǎn)載需保留來(lái)源!
鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請(qǐng)第一時(shí)間聯(lián)系我們修改或刪除,多謝。