加入收藏 | 设为首页 | 会员中心 | 我要投稿 黔东南站长网 (https://www.0855zz.com.cn/)- 混合云存储、建站、网络、云计算、应用安全!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

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

发布时间:2022-07-02 10:32:31 所属栏目:PHP教程 来源:互联网
导读: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.windo
  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模块,安装好了以后就可以访问了。
 
  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;   
  }   
 

(编辑:黔东南站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读