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


Posted in PHP onDecember 17, 2013

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

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("\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 相关文章推荐
使用adodb lite解决问题
Dec 31 PHP
php正则校验用户名介绍
Jul 19 PHP
php面向对象全攻略 (十二) 抽象方法和抽象类
Sep 30 PHP
php无限遍历目录示例
Feb 21 PHP
php表单敏感字符过滤类
Dec 08 PHP
php写入、删除与复制文件的方法
Jun 20 PHP
php把数组值转换成键的方法
Jul 13 PHP
详细解读PHP中接口的应用
Aug 12 PHP
php实现的递归提成方案实例
Nov 14 PHP
WordPress中用于获取搜索表单的PHP函数使用解析
Jan 05 PHP
phpinfo() 中 Local Value(局部变量)Master Value(主变量) 的区别
Feb 03 PHP
php post json参数的传递和接收处理方法
May 31 PHP
phpstrom使用xdebug配置方法
Dec 17 #PHP
php使用curl发送json格式数据实例
Dec 17 #PHP
php获取301跳转URL简单实例
Dec 16 #PHP
PHP获取MAC地址的具体实例
Dec 13 #PHP
php配合jquery实现增删操作具体实例
Dec 12 #PHP
php文件上传的例子及参数详解
Dec 12 #PHP
PHP 提取图片img标记中的任意属性的简单实例
Dec 10 #PHP
You might like
php去除换行符的方法小结(PHP_EOL变量的使用)
2013/02/16 PHP
IIS+fastcgi下PHP运行超时问题的解决办法详解
2013/06/20 PHP
PHP数组常用函数实例小结
2018/08/20 PHP
PHP保存Base64图片base64_decode的问题整理
2019/11/04 PHP
ext 同步和异步示例代码
2009/09/18 Javascript
EXT中xtype的含义分析
2010/01/07 Javascript
如何在JavaScript中实现私有属性的写类方式(一)
2013/12/04 Javascript
js操作模态窗口及父子窗口间相互传值示例
2014/06/09 Javascript
让html页面不缓存js的实现方法
2014/10/31 Javascript
Javascript基础教程之数据类型转换
2015/01/18 Javascript
ECMAScript5(ES5)中bind方法使用小结
2015/05/07 Javascript
原生js图片轮播效果实现代码
2016/10/19 Javascript
微信小程序 radio单选框组件详解及实例代码
2017/01/10 Javascript
JavaScript数据结构之链表的实现
2017/03/19 Javascript
在页面中引入js的两种方法(推荐)
2017/08/29 Javascript
Javascript 严格模式use strict详解
2017/09/16 Javascript
vue-cli项目中使用公用的提示弹层tips或加载loading组件实例详解
2018/05/28 Javascript
node koa2 ssr项目搭建的方法步骤
2020/12/11 Javascript
[06:20]2015国际邀请赛第三日top10
2015/08/08 DOTA
pycharm 使用心得(九)解决No Python interpreter selected的问题
2014/06/06 Python
python中base64加密解密方法实例分析
2015/05/16 Python
python使用in操作符时元组和数组的区别分析
2015/05/19 Python
Python如何实现MySQL实例初始化详解
2017/11/06 Python
python用户管理系统
2018/03/13 Python
ubuntu安装sublime3并配置python3环境的方法
2018/03/15 Python
详解Python传入参数的几种方法
2019/05/16 Python
Python多进程入门、分布式进程数据共享实例详解
2019/06/03 Python
Python+Selenium+phantomjs实现网页模拟登录和截图功能(windows环境)
2019/12/11 Python
使用ITK-SNAP进行抠图操作并保存mask的实例
2020/07/01 Python
高清屏下canvas重置尺寸引发的问题的解决
2019/10/14 HTML / CSS
小学网上祭英烈活动总结
2014/07/05 职场文书
上诉状格式
2015/05/23 职场文书
写一个Python脚本自动爬取Bilibili小视频
2021/04/24 Python
python 爬取京东指定商品评论并进行情感分析
2021/05/27 Python
Mysql数据库索引面试题(程序员基础技能)
2021/05/31 MySQL
python基础之类方法和静态方法
2021/10/24 Python