zl程序教程

您现在的位置是:首页 >  后端

当前栏目

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

方法连接HTTPS 解决 无法 File 请求 get
2023-06-13 09:15:14 时间

错误:Warning:fopen()[function.fopen]:Unabletofindthewrapper"https"-didyouforgettoenableitwhenyouconfiguredPHP?

解决方案有3:

1.windows下的PHP,只需要到php.ini中把extension=php_openssl.dll前面的;删掉,重启服务就可以了。

2.linux下的PHP,就必须安装openssl模块,安装好了以后就可以访问了。

3.如果服务器你不能修改配置的话,那么就使用curl函数来替代file_get_contents函数,当然不是简单的替换啊。还有相应的参数配置才能正常使用curl函数。

对curl函数封装如下:

复制代码代码如下:


functionhttp_request($url,$timeout=30,$header=array()){ 
        if(!function_exists("curl_init")){ 
            thrownewException("servernotinstallcurl"); 
        } 
        $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;