您好,欢迎访问一九零五行业门户网

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

使用file_get_contents无法请求https连接问题觖方法很简单,我们只要把php_openssl开启就可以了,当然linux系统需要安装openssl模块了。
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 (!empty($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;
}
http://www.bkjia.com/phpjc/632728.htmlwww.bkjia.comtruehttp://www.bkjia.com/phpjc/632728.htmltecharticle使用file_get_contents无法请求https连接问题觖方法很简单,我们只要把php_openssl开启就可以了,当然linux系统需要安装openssl模块了。 php.ini默认配...
其它类似信息

推荐信息