`
tw5566
  • 浏览: 460661 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
社区版块
存档分类
最新评论

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

    博客分类:
  • 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.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 (!empty($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;
}

 

 

分享到:
评论

相关推荐

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

    总之,要解决 `file_get_contents` 无法处理HTTPS连接的问题,可以考虑启用PHP的OpenSSL扩展、安装cURL库或直接使用cURL函数进行网络请求。这些方法可以根据您的具体环境和需求灵活选择。在处理远程文件或API请求时...

    php下载文件file_get_contents php input

    首先,`file_get_contents`函数的基本语法是`file_get_contents($filename, $context, $offset, $maxlen)`。其中,`$filename`参数可以是一个本地文件路径,也可以是一个URL。例如,如果你想从一个HTTP地址下载文件...

    PHP file_get_contents 函数超时的几种解决方法

    本文将详细讲解两种解决`file_get_contents`函数超时的方法。 ### 方法一:增加超时时间限制 首先,我们要明确一点:`set_time_limit` 函数仅用于设置整个PHP脚本的执行时间限制,并不能直接影响`file_get_...

    file_get_contents获取不到网页内容的解决方法

    本文将详细讲解当`file_get_contents`获取不到网页内容时,如何通过使用cURL库来解决这个问题。 首先,`file_get_contents` 的基本用法是这样的: ```php $content = file_get_contents('http://example.com'); ``...

    PHP file_get_contents设置超时处理方法

    在处理超时问题时,可以采取一种试探性的处理方法,即在file_get_contents函数失败返回FALSE时,不是立即放弃,而是尝试重新执行该函数,类似于JavaScript中settimeout的逻辑。但需要注意的是,超时重试应有一定的...

    PHP file_get_contents函数读取远程数据超时的解决方法

    总的来说,解决`file_get_contents` 读取远程数据超时的问题,主要通过设置超时时间和采用重试机制,以及在处理大文件时选择更合适的读取方法。理解这些技巧将有助于编写更健壮和高效的PHP代码。

    PHP中使用file_get_contents抓取网页中文乱码问题解决方法

    解决这个问题的一种方法是使用 `cURL` 库代替 `file_get_contents`。`cURL` 提供了更丰富的配置选项,可以处理 GZIP 压缩。在 `cURL` 设置中,添加 `CURLOPT_ENCODING` 参数,并将其值设为 `"gzip"`,如下所示: ``...

    PHP中file_get_contents函数抓取https地址出错的解决方法(两种方法)

    本文将探讨两种解决file_get_contents函数在抓取HTTPS地址时出错的方法,这对于提高开发效率以及解决线上问题非常有用。 当尝试使用file_get_contents函数获取HTTPS内容时,最常见的错误信息是: ``` Warning: file...

    比file_get_contents稳定的curl_get_contents分享

    本文将详细讨论`file_get_contents`和`curl`的区别,以及为何`curl_get_contents`可能比`file_get_contents`更为稳定。 `file_get_contents`是一个非常简单且易于使用的函数,它能够读取文件或者URL的内容。然而,...

    PHP-CGI进程CPU 100% 与 file_get_contents 函数的关系分析

    如果`file_get_contents()`请求的页面加载慢,服务器仍可能频繁返回"502 Bad Gateway"错误,因为有限的php-cgi进程资源会被长时间占用,无法处理新的请求。 为了更有效地解决这个问题,开发人员应当修改使用`file_...

    PHP使用file_get_contents发送http请求功能简单示例

    主要介绍了PHP使用file_get_contents发送http请求功能,结合实例形式分析了file_get_contents结合stream_context_create实现的发送post请求数据相关原理与操作技巧,需要的朋友可以参考下

    解决PHP curl或file_get_contents下载图片损坏或无法打开的问题

    当使用file_get_contents函数直接下载图片时,如果没有考虑到服务器可能返回的压缩内容,就可能会导致获取到的数据无法被正确解析为图片,从而出现损坏。同样的,使用cURL获取内容时,如果不设置正确的HTTP头信息...

    关于file_get_contents返回为空或函数不可用的解决方案

    2. **网络连接问题**:如果目标服务器或网络存在问题,导致请求无法到达,`file_get_contents` 可能会返回空值。 3. **服务器限制**:某些共享主机环境可能会限制使用 `file_get_contents` 函数,以防止滥用资源。 ...

    深入php函数file_get_contents超时处理的方法详解

    此外,`file_get_contents()` 不仅支持GET请求,也支持POST请求。以下是一个使用POST方法的示例: ```php function Post($url, $post = null) { $context = array(); if (is_array($post)) { ksort($post); $...

    解析file_get_contents模仿浏览器头(user_agent)获取数据

    在这个例子中,我们创建了一个HTTP选项数组,其中包含了请求方法(GET)、多个HTTP头信息,然后使用 `stream_context_create` 创建了一个上下文,最后在调用 `file_get_contents` 时传入该上下文,确保了请求带有...

    PHP fopen()和 file_get_contents()应用与差异介绍

    使用 `file_get_contents()` 时,如果目标是远程URL,它会自动处理HTTP请求,而无需像 `fopen()` 那样处理流和循环。 3. **差异比较** - **灵活性**:`fopen()` 提供了更多控制,如文件指针定位、读写模式切换等...

    php file_get_contents取文件中数组元素的方法

    ### 使用`file_get_contents()`读取文件 `file_get_contents()`是一个非常实用的函数,它能够将文件的内容读取到一个字符串中。使用这个函数,我们可以轻松地获取本地文件或者远程URL的内容。该函数的基本语法如下...

    php中使用Curl、socket、file_get_contents三种方法POST提交数据

    在PHP中,获取远程内容的方法主要有三种:Curl、socket和`file_get_contents`。每种方法都有其独特的特性和适用场景。以下是这三种方法的详细介绍: 1. **Curl (Client URL Library)** Curl 是一个强大的命令行...

    PHP中使用file_get_contents post数据代码例子

    file_get_contents() 默认是通过GET方法获取数据,但通过适当配置,它也可以用来通过POST方法发送数据。 上述内容提到的代码例子主要演示了如何使用file_get_contents()函数来向指定URL发送POST请求并提交数据。...

Global site tag (gtag.js) - Google Analytics