转自
使用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);
分享到:
相关推荐
首先,`file_get_contents`函数的基本语法是`file_get_contents($filename, $context, $offset, $maxlen)`。其中,`$filename`参数可以是一个本地文件路径,也可以是一个URL。例如,如果你想从一个HTTP地址下载文件...
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 ,去掉双引号”;...
总之,解决`file_get_contents`超时问题通常涉及调整超时时间或实现重试机制。根据项目需求和实际情况,你可能还需要考虑使用`cURL`或其他网络请求库来增强功能和控制。理解这些方法和相关知识点,有助于编写更健壮...
针对 `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和fopen必须空间开启allow_url_fopen。方法:编辑php.ini,设置allow_url_fopen = On,allow_url...
本文将详细讲解当`file_get_contents`获取不到网页内容时,如何通过使用cURL库来解决这个问题。 首先,`file_get_contents` 的基本用法是这样的: ```php $content = file_get_contents('http://example.com'); ``...
如果你无法修改服务器配置,或者上述方法无法解决问题,你可以使用PHP的cURL库来代替`file_get_contents`。cURL是一个强大的URL传输库,支持多种协议,包括HTTPS。下面是一个封装好的cURL函数示例,用于发起HTTP...
string file_get_contents ( string $filename [, bool $use_include_path [, resource $context [, int $offset [, int $maxlen]]]] ) ``` 这个函数可以接受最多五个参数。其中,第一个参数 $filename 是必须的,...
总结来说,处理file_get_contents的超时问题,应从设置合理的超时时间和合适的重试策略出发,确保在网络或服务器不稳定时,程序能够更加健壮和灵活地应对。同时,对于PHP支持context的其他函数,在进行网络请求或...
解决这个问题的一种方法是使用 `cURL` 库代替 `file_get_contents`。`cURL` 提供了更丰富的配置选项,可以处理 GZIP 压缩。在 `cURL` 设置中,添加 `CURLOPT_ENCODING` 参数,并将其值设为 `"gzip"`,如下所示: ``...
本文将详细讨论`file_get_contents`和`curl`的区别,以及为何`curl_get_contents`可能比`file_get_contents`更为稳定。 `file_get_contents`是一个非常简单且易于使用的函数,它能够读取文件或者URL的内容。然而,...
总之,解决`file_get_contents`获取远程页面乱码的问题,关键在于识别并正确处理压缩格式。无论是通过URL前缀、ungzip函数还是cURL,都可以有效地解决这个问题。同时,根据具体需求和文件大小,灵活选择合适的文件...
提问我循环用file_get_contents抓取一堆url,但总是会在不到第100个URL的时候停下,提示我:“Warning: file_get_contents(URL) [function.file-get-contents]: failed to open stream: HTTP request failed...
为了更有效地解决这个问题,开发人员应当修改使用`file_get_contents()`的方式,添加超时设置。通过创建一个流上下文(stream context),可以为HTTP请求设置特定的超时时间,如下所示: ```php $ctx = stream_...
下面是file_get_contents和curl两个函数同样功能的不同写法file_get_contents函数的使用示例:复制代码 代码如下:< ?php$file_contents = file_get_contents(‘https://www.jb51.net’);echo $file_...
不过,需要注意的是,当使用file_get_contents()打开大文件或远程URL时,可能会遇到内存限制问题。 在使用这些函数时,要根据实际需求选择合适的函数。对于小文件或简单的读取操作,file_get_contents()由于其简洁...
在PHP中,`fopen()` 和 `file_get_contents...如果你追求简洁和效率,且文件大小不是问题,那么 `file_get_contents()` 更佳。在实际开发中,根据项目需求灵活选择和使用这两个函数,能够有效提高代码的可读性和性能。
然而,在网络环境不稳定或目标服务器响应慢的情况下,`file_get_contents` 很可能会遇到读取远程数据超时的问题。这可能导致脚本执行中断,影响程序的正常运行。为了解决这一问题,我们可以采取一些策略来优化`file_...
当使用file_get_contents函数直接下载图片时,如果没有考虑到服务器可能返回的压缩内容,就可能会导致获取到的数据无法被正确解析为图片,从而出现损坏。同样的,使用cURL获取内容时,如果不设置正确的HTTP头信息...