首页 >php教程 >php手册 >file_get_contents无法请求https连接的解决方法

file_get_contents无法请求https连接的解决方法

WBOY
WBOY原创
2016-05-25 16:45:051043浏览

PHP.ini默认配置下,用file_get_contents读取https的链接,就会如下错误:

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前面的;删掉,重启服务就可以了.

2.linux下的PHP,必须安装openssl模块,安装好了以后就可以访问了.

安装方法:

OpenSSL库的安装

官网:http://www.openssl.org

下载页面:http://www.openssl.org/source/

选择最新版本下载

http://www.openssl.org/source/openssl-1.0.0a.tar.gz

解压:tar –zxvf openssl-1.0.0d.tar.gz,解压目录为:openssl-1.0.0d

然后进入到 cd openssl-1.0.0d,进行配置、编译、安装

配置: ./configure或./config

编译

make

安装

make install

3.如果服务器你不能修改配置的话,那么就使用curl函数来替代file_get_contents函数,当然不是简单的替换啊,还有相应的参数配置才能正常使用curl函数.

对curl函数封装如下:

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("rnrn", $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; 
}

               
               

文章网址:

随意转载^^但请附上教程地址。

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn