当前位置: 首页 > 知识库问答 >
问题:

PHPcurl_exec()检索远程映像时拒绝连接

令狐嘉运
2023-03-14

我想用php检索一个远程托管的图像。图像存在,我可以使用浏览器访问它。但是,curl_exec()的结果为空,curl_error()表示:

无法连接到img107.xooimage.com端口80:连接被拒绝

这是我的代码:

                $ch = curl_init();
                curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
                curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
                curl_setopt($ch, CURLOPT_URL, 'http://img107.xooimage.com/files/5/0/b/ss-2014-06-15-at-12.58.47--46324f5.png');
                curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 10);
                curl_setopt($ch, CURLOPT_TIMEOUT, 10);
                $image = curl_exec($ch);

                if( empty($image) ){
                    echo("Impossible to retrieve the file !<br>
                    error: ".curl_error($ch)."<br>");
                }

如果我可以用浏览器打开图像,那么为什么使用curl时会拒绝连接?

备注:它适用于我自己领域的图像,但不适用于示例中的外部图像。

共有2个答案

贺皓
2023-03-14

经过测试,下面的代码确实将给定的图像保存到文件image.png中,并且是可读的。是丢失的东西吗?

<?php
$ch = curl_init();
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_URL, 'http://img107.xooimage.com/files/5/0/b/ss-2014-06-15-at-12.58.47--46324f5.png');
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 10);
curl_setopt($ch, CURLOPT_TIMEOUT, 10);
$image = curl_exec($ch);
var_dump($image); // Binary content
$save = fopen('image.png', 'w');
fwrite($save, $image);
fclose($save);
curl_close($ch);
聂和宜
2023-03-14

你需要在阅读之前关闭卷曲

$ch = curl_init('http://img107.xooimage.com/files/5/0/b/ss-2014-06-15-at-12.58.47--46324f5.png');
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_FAILONERROR,true);
$image = curl_exec($ch);
if (curl_errno($ch)) {  
    print_r(curl_error($ch));  
    die;
}
curl_close($ch);
return $image;
 类似资料:
  • 问题内容: 每当我尝试启动eclipse调试(用于服务器端代码)时,我都会收到以下错误 无法连接到远程VM。 拒绝连接。 可能是什么问题?我已经尝试了网络上的大多数解决方案,但是都没有解决我的问题。谁能帮我解决这个问题?提前谢谢.. 问题答案: 您正在使用哪个服务器? 就像已经说过的: 在调试配置中,您必须定义服务器的正确端口(GF:9009 / Tomcat:8000) 您必须将服务器的JVM属

  • 我在unbundu机器中使用JMeter设置了一个分布式负载测试环境。 - - - - 系统上的防火墙已关闭 -所有计划的主和从都在同一个子网中 -JMeter 服务器可以访问目标。 -所有系统上的JMeter版本相同(版本2.3.4)。 1) 尝试通过ubundu终端从主设备ping到从设备,反之亦然。它正在发生。。 2) 在客户端(主)jmeter 属性中添加了以下内容: 3) 在服务器(从属

  • 我使用最新版本的PsExec,并以管理员身份运行执行命令提示符。我们使用PsExec v2.11 执行简单的服务器连接测试(例如从我的机器my_机器到远程_服务器) 另一个域中的另一个伙伴,它获取拒绝访问错误。 要登录到计算机的用户是域\u伙伴\用户\u伙伴。 我检查了PSExec使用的端口445和135,它们都在远程_服务器上打开。其他领域。本地计算机: 可从资源管理器访问目录: 我得到访问被拒

  • 我一直尝试访问上载图像URL,但图像链接在一段时间后过期,并显示错误“AccessDenied” 我还公开了水桶政策 {“版本”:“2008-10-17”,“语句”:[{“SID”:“AllowPublicRead”,“Effect”:“Allow”,“Principal”:{“AWS”:“”},“Action”:“S3:GetObject”,“Resource”:“arn:AWS:S3:::Pr

  • 我看到了很多“java.net.ConnectException:Connection Relection”问题,但没有一个问题提到此错误的超时。我的问题是,我必须连接到一个服务器,在某些情况下,是阻塞的(由另一个软件连接到同一个端口)。所以,我正在做一个循环,用一些最大的重试来尝试连接: 我当前的代码(当然,依赖于我的软件的许多配置,但运行良好): null Linux: 2019-12-05

  • 问题内容: 我是Docker的新手。我正在尝试创建一个MongoDB容器和一个NodeJS容器。我的档案看起来: 它应该运行然后。但最终以while命令结束。我认为这是因为文件中的。这是正确的吗? 我在Win10系统上使用boot2docker。 如何解决此问题,以便节点可以连接到MongoDB? 问题答案: 在您的后端应用中,连接而不是。其中“ mongodb”是docker- compose.