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

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; 

时间: 2024-09-19 20:42:26

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

php使用fsockopen函数发送post,get请求获取网页内容的方法_php技巧

本文实例讲述了php使用fsockopen函数发送post,get请求获取网页内容的方法.分享给大家供大家参考. 具体实现代码如下: 复制代码 代码如下: $post =1; $url = parse_url($url); $host ='http://www.jb51.net'; $path ='/'; $query ='?action=phpfensi.com'; $port =80;   if($post) {   $out = "post $path http/1.0 ";  

php建立Ftp连接的方法_php技巧

本文实例讲述了php建立Ftp连接的方法.分享给大家供大家参考.具体分析如下: 今天看了下ftp函数,总结一下: FTP相关函数: ftp_connect(host,part,timeout)   建立新的ftp连接,host是要连接的服务器,part是端口,默认21,timeout是网络连接超时时间 ftp_login(con,user,password)  登陆ftp,con是上行建立的ftp连接.还有用户user和密码password ftp_close(con)    关闭con这个连接

PHP实现模仿socket请求返回页面的方法_php技巧

本文实例讲述了PHP实现模仿socket请求返回页面的方法.分享给大家供大家参考.具体实现方法如下: 复制代码 代码如下: <?php  $url = "www.XXXX.com"; //自己做替换  $parse = parse_url($url); //对URL进行解析,返回起组成部分.  $host = $parse['host'];  $path = $parse['path'];  $port = 80;  $timeout = 80;  $fp = @fsockope

解决php表单重复提交实现方法_php技巧

重复提交是我们开发中会常碰到的一个问题,除了我们使用js来防止表单的重复提交,同时还可以使用php来防止重复提交哦. <?php /* * php中如何防止表单的重复提交 */ session_start(); if (empty($_SESSION['ip'])) {//第一次写入操作,判断是否记录了IP地址,以此知道是否要写入数据库 $_SESSION['ip'] = $_SERVER['REMOTE_ADDR']; //第一次写入,为后面刷新或后退的判断做个铺垫 //...........

php使用curl打开https网站的方法_php技巧

本文实例讲述了php使用curl打开https网站的方法.分享给大家供大家参考.具体实现方法如下: $url = 'https://www.google.com.hk'; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_HEADER, false); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CU

redis查看连接数及php模拟并发创建redis连接的方法_php技巧

max_redis.php <?php set_time_limit (0); for($i=1;$i<=1050;$i++){ exec("nohup php /var/www/html/big/link_redis.php > /dev/null &"); } link_redis.php <?php set_time_limit (0); $redis = new redis(); $redis->pconnect('localhost',

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前面的;删掉,重启

php curl 获取https请求的2种方法_php技巧

今天一个同事反映,使用curl发起https请求的时候报错:"SSL certificate problem, verify that the CA cert is OK. Details: error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed" 很明显,验证证书的时候出现了问题. 使用curl如果想发起的https请求正常的话有2种做法: 方法一.设定为不验证证书和host.

实现PHP多线程异步请求的3种方法_php技巧

在网上看过很多版本的PHP异步请求方法,这里简单总结几个常用方法分享给大家 1.用CURL实现一步请求 CURL扩展是我们在开发过程中最常用的一种方法,他是一个强大的HTTP命令行工具,可以模拟POST/GET等HTTP请求,然后得到和提取数据,显示在"标准输出"(stdout)上面. 示例: 复制代码 代码如下: <?php $cl = curl_init(); $curl_opt = array(CURLOPT_URL, 'http://www.uncletoo.com/de