好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

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

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://HdhCmsTestopenssl.org

下载页面:http://HdhCmsTestopenssl.org/source/

选择最新版本下载

http://HdhCmsTestopenssl.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 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 ;  } 

查看更多关于file_get_contents无法请求https连接的解决方法 - php高的详细内容...

  阅读:35次