`
alfred_long
  • 浏览: 566409 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

转:file_get_contents()问题

    博客分类:
  • PHP
 
阅读更多

 

转自

使用php5自带的file_get_contents方法来获取远程文件的时候,有时候会出现file_get_contents(): failed to open stream: HTTP request failed!这个警告信息。

 

google或者baidu一下,好多这样的问题,解决的方法都是修改php.ini,把allow_url_fopen给启用,改成 allow_url_fopen = On

 

这样做可以解决某些人的问题,有人说在php.ini中,有这样两个选项:allow_url_fopen =on(表示可以通过url打开远程文件),user_agent="PHP"(表示通过哪种脚本访问网络,默认前面有个 " ; " 去掉即可。)重启服务器。

 

但是有些还是会有这个警告信息,想用完美的解决还差一步,还得设置php.ini里面的user_agent,php默认的user_agent是PHP,我们把它改成Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)来模拟浏览器就可以了

 

user_agent=”Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)”

 

 

我批量抓取chemblink的结构式发现循环后有部分图片无法显示,而远程文件是存在的。

抓取远程文件的时候出现类似Warning: readfile(http://www.php100.com/logo.gif) [function.readfile]: failed to open stream: HTTP request failed! 这样的警告信息,我使用的是

 

ob_start(); 

readfile("http://www.php100.com/logo.gif");

$img = ob_get_contents(); 

ob_end_clean();

 

 

这样在运行中会时不时的出现上述错误,我也换过file_get_contents等其他函数都没用用,在网上查阅后发现用CURL方法抓取不会出错

 

$url = "http://www.php100.com/logo.gif";

$ch = curl_init();

//模拟浏览器访问

curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 2.0.50727; InfoPath.1; CIBA)");

curl_setopt ($ch, CURLOPT_URL, $url);

curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1); 

curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT,10);

$img = curl_exec($ch); 

分享到:
评论

相关推荐

    php下载文件file_get_contents php input

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

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

    Warning: file_get_contents() [function.file-get-contents]: failed to open stream: Invalid argument in I:Webmyphpa.php on line 16 打开php.ini文件找到 ;extension=php_openssl.dll ,去掉双引号”;...

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

    总之,解决`file_get_contents`超时问题通常涉及调整超时时间或实现重试机制。根据项目需求和实际情况,你可能还需要考虑使用`cURL`或其他网络请求库来增强功能和控制。理解这些方法和相关知识点,有助于编写更健壮...

    执行、获取远程代码返回:file_get_contents 超时处理的问题详解

    针对 `file_get_contents()` 的超时问题,我们可以利用其第三个参数 `context` 来设置超时时间。例如: ```php $url = "http://zhoz.com/zhoz.php"; $ctx = stream_context_create(array( 'http' => array( 'time...

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

    如果你使用file_get_contents获取远程文件内容返回为空或提示该函数不可用,也许本文能帮到你! 使用file_get_contents和fopen必须空间开启allow_url_fopen。方法:编辑php.ini,设置allow_url_fopen = On,allow_url...

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

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

    php 使用file_get_contents读取大文件的方法

    string file_get_contents ( string $filename [, bool $use_include_path [, resource $context [, int $offset [, int $maxlen]]]] ) ``` 这个函数可以接受最多五个参数。其中,第一个参数 $filename 是必须的,...

    PHP file_get_contents设置超时处理方法

    总结来说,处理file_get_contents的超时问题,应从设置合理的超时时间和合适的重试策略出发,确保在网络或服务器不稳定时,程序能够更加健壮和灵活地应对。同时,对于PHP支持context的其他函数,在进行网络请求或...

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

    然而,当尝试使用 `file_get_contents` 函数读取HTTPS(安全的HTTP)连接时,可能会遇到一些问题。这主要是由于PHP默认配置未启用必要的SSL/TLS支持。以下是针对这一问题的三种解决方案: 1. **Windows环境下**: ...

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

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

    比file_get_contents稳定的curl_get_contents分享

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

    解析PHP中的file_get_contents获取远程页面乱码的问题

    总之,解决`file_get_contents`获取远程页面乱码的问题,关键在于识别并正确处理压缩格式。无论是通过URL前缀、ungzip函数还是cURL,都可以有效地解决这个问题。同时,根据具体需求和文件大小,灵活选择合适的文件...

    详解PHP内置访问资源的超时时间 time_out file_get_contents read_file

    提问我循环用file_get_contents抓取一堆url,但总是会在不到第100个URL的时候停下,提示我:“Warning: file_get_contents(URL) [function.file-get-contents]: failed to open stream: HTTP request failed...

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

    为了更有效地解决这个问题,开发人员应当修改使用`file_get_contents()`的方式,添加超时设置。通过创建一个流上下文(stream context),可以为HTTP请求设置特定的超时时间,如下所示: ```php $ctx = stream_...

    深入file_get_contents函数抓取内容失败的原因分析

    下面是file_get_contents和curl两个函数同样功能的不同写法file_get_contents函数的使用示例:复制代码 代码如下:< ?php$file_contents = file_get_contents(‘https://www.jb51.net’);echo $file_...

    PHP使用fopen与file_get_contents读取文件实例分享

    不过,需要注意的是,当使用file_get_contents()打开大文件或远程URL时,可能会遇到内存限制问题。 在使用这些函数时,要根据实际需求选择合适的函数。对于小文件或简单的读取操作,file_get_contents()由于其简洁...

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

    在PHP中,`fopen()` 和 `file_get_contents...如果你追求简洁和效率,且文件大小不是问题,那么 `file_get_contents()` 更佳。在实际开发中,根据项目需求灵活选择和使用这两个函数,能够有效提高代码的可读性和性能。

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

    然而,在网络环境不稳定或目标服务器响应慢的情况下,`file_get_contents` 很可能会遇到读取远程数据超时的问题。这可能导致脚本执行中断,影响程序的正常运行。为了解决这一问题,我们可以采取一些策略来优化`file_...

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

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

Global site tag (gtag.js) - Google Analytics