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

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;
}

时间: 2024-10-03 11:40:13

file_get_contents无法请求https连接的解决方法的相关文章

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

错误: 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模块,安装好了以后就可以访

宽带连接错误解决方法大集合

上网最烦的是什么?网速慢,广告,中病毒等等,其中最让人感到烦恼的莫过于那些莫名其妙弹出的"宽带连接错误XXX"的弹窗警告了,经常在这种时候你是上不了网的,身边有手机还好,刷着流量去百度找帖子解决,身边没手机怎么办?打电信或者联通客服?有一点必须确认的是他们即使答应让人来修复也一定不是现在. 今天软媒小编整理编排了一些关于691.623.678...宽带连接错误解决方法大集合,这些解决方法来源于网络,望知晓出处者不吝告知,感激不尽.希望或多或少能帮助到你. 宽带连接错误691(由于域上的

AngularJS出现$http异步后台无法获取请求参数问题的解决方法_AngularJS

本文实例讲述了AngularJS出现$http异步后台无法获取请求参数问题的解决方法.分享给大家供大家参考,具体如下: angular在通过异步提交数据时使用了与jQuery不一样的请求头部和数据序列化方式,导致部分后台程序无法正常解析数据. 原理分析(网上的分析): 对于AJAX应用(使用XMLHttpRequests)来说,向服务器发起请求的传统方式是:获取一个XMLHttpRequest对象的引用.发起请求.读取响应.检查状态码,最后处理服务端的响应.整个过程示例如下: var xmlht

64位win7下pl/sql无法连接oracle解决方法_oracle

1.pl/sql无法连接本机的oracle(ORA 12154:TNS:无法解析指定的连接标识符) 解决方法:pl/sql不能安装在Program Files(x86)文件夹下,要安装在Program Files文件夹下 2.pl/sql无法连接远程oracle(ORA-12514: TNS: 监听程序当前无法识别连接描述符中请求的服务) 解决方法:①在linux下找到oracle目录下的listener.ora,用vi编辑②下面红色为添加部分,其中GLOBAL_DBNAME要与客户机配置的or

用户 'sa' 登录失败。原因: 未与信任 SQL Server 连接 的解决方法

用户 'sa' 登录失败.原因: 未与信任 SQL Server 连接 的解决方法如下: 一.控制面板->服务->MS SQL SERVER->登陆-->本地系统帐户-->重新启动MS SQL SERVER用windows验证登陆查询分析器-->执行 sp_password null,sa新密码,'sa' 二."无法连接到服务器,用户xxx登陆失败"该错误产生的原因是由于SQL Server使用了"仅 Windows"的身份验证方

Win8/Win8.1系统一直自动弹出拨号连接窗口解决方法

  Win8/Win8.1系统一直自动弹出拨号连接窗口解决方法.下面我们一起来看看Win8和Win8.1关于这个问题的解决方法. 一.Win8情况需要在IE中设置 1.打开IE(适用于IE10以下版本),点击右上角齿轮"工具"按钮,菜单中选择"Intenet选项"; 2.在Internet选项界面,点击"连接"选项卡,点击勾选"如果要为连接配置代理服务器,请选择'设置'"下面的"从不进行拨号连接",然后确定

win7一直显示正在识别宽带连接的解决方法

  网络现在深入生活的方方面面,但是大家最害怕遇到的就是电脑连接宽带时遇到"正在识别",经常玩电脑的同学知道,遇到以上四个字眼就代表着网络连接不成功,所以根本没必要一直坐着傻等,一定要找到解决的方案,下面小编就为大家带来了"新鲜"简单的解决方法.这些方法只需要动动手指,不需要到处在网站找解决方案,也不需要急着检查是不是网络本身有问题,是不是很简单呢? win7一直显示正在识别宽带连接的解决方法: 第一种方法: 首先,在Win7电脑屏幕右下角的通知区域处找到一个小电脑

win7系统找不到无线网络连接的解决方法

  网络不断发展使得无线网络被广泛的使用,目前的手机和电脑都会经常用到,但是最近有不少一直都反应说win7 32位系统下载之后,电脑里面的无线网络连接找不到了,只有一个本地连接.那么遇到这样的问题该怎么办呢?下面就来一起看看win7 32位系统找不到无线网络连接的解决方法. 方法一. 首先将控制面板打开,接着直接额选择网络和共享中心选项,然后再选择左边的"更改适配器设置"选项,再查看无线网络连接是否被禁用,如果被禁用了就需要进行重新连接. 方法二. 检查下无线开关是否被关了,一般来说,

酷我音乐盒无法连接网络解决方法

  酷我音乐盒无法连接网络解决方法: 1.打开浏览器,点"工具"→Internet选项→"管理加载项"那里禁用所有可疑插件,或者你能准确知道没问题的保留. 然后工具→Internet选项→常规页面→删除cookies→删除文件→钩选删除所有脱机内容→确定→设置使用的磁盘空间为:8MB或以下→确定→清除历史纪录→网页保存在历史记录中的天数:3以下→应用确定(我自己使用的设置是"0"天). 2.还原浏览器高级设置:工具→INTERNET选项→高级→还