【问题标题】:cURL FTP connection卷曲 FTP 连接
【发布时间】:2012-02-28 17:35:48
【问题描述】:

我们的服务器上运行了一个 cron-job,它从 MeteoConsult 下载数据,这是一些荷兰天气报告公司......事情......

无论如何,基本上脚本通过 cURL 使用 FTP 下载 XML 文件,然后使用 SimpleXML 进行解析。一两个星期前,它决定随机死亡,扼杀了我们观看天气的乐趣。我一无所知。 FTP数据是正确的并且已经过验证。 Meteo 服务器不会阻止运行 cron-job 的服务器的 IP 地址。

为什么开发人员使用 cURL 通过 FTP 下载文件对我来说确实是个谜。当我在不同的服务器上运行脚本时,它似乎可以工作。

有了这些信息,我假设要么我们使用的是“老式”方式,并且无法使用新的 cURL / PHP 版本,但我找不到任何相关信息,或者我们的服务器的防火墙阻止了连接。

这是(部分)脚本:

$curl = curl_init();
curl_setopt($curl, CURLOPT_URL,"ftp://username:password@ftp.meteocon.nl/file.xml");
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_TIMEOUT, 300);
curl_setopt($curl, CURLOPT_FTP_USE_EPSV, 0);

$xml = curl_exec($curl);
$status = curl_getinfo($curl);
curl_close($curl);

// At this point, $xml is NULL

这个脚本有什么问题吗?如果没有,你们知道问题可能是什么吗?

PHP version: 5.2.12
libcurl version: 7.20.0

非常感谢。

【问题讨论】:

  • 您是否尝试过检查错误? php.net/manual/en/function.curl-error.php
  • @Znarkus 好点! string(24) "couldn't connect to host"。仍然没有完全解释为什么。
  • 你能通过命令行curlftp从服务器连接到FTP吗?
  • @Znarkus 问题已解决,但我还不能删除问题。在这一点上,我也不能将自己的答案标记为正确答案。我得等2天。看我的回答。
  • 没问题,等2天接受吧:)

标签: php curl ftp


【解决方案1】:

主机最近加强了服务器的安全性。他们必须将 URL 添加到白名单中。

感谢大家的回答。

【讨论】:

    【解决方案2】:

    问题似乎与 IPv6 FTP PASV 有关。尝试打开/关闭(或测试为完全删除)CURLOPT_FTP_USE_EPSV 选项。 您可以查看此以获取更多信息:IPv6 FTP PASV problems

    【讨论】:

      【解决方案3】:

      看看download a file from ftp using curl and php提供的答案

      基本上你需要像这样将 URI 和身份验证设置分开:

      $curl = curl_init();
      curl_setopt($curl, CURLOPT_URL, "ftp.meteocon.nl/file.xml"); #input
      curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
      curl_setopt($curl, CURLOPT_FILE, $file); #output
      curl_setopt($curl, CURLOPT_USERPWD, "$_FTP[username]:$_FTP[password]");
      curl_exec($curl);
      

      我还没有测试过,但我希望它会有所帮助。

      【讨论】:

        猜你喜欢
        • 2020-12-01
        • 2017-04-22
        • 2015-02-23
        • 1970-01-01
        • 2019-08-16
        • 1970-01-01
        • 2016-06-30
        • 2012-08-11
        • 2016-01-26
        相关资源
        最近更新 更多