【问题标题】:php libcurl alternativephp libcurl 替代
【发布时间】:2010-11-23 19:45:54
【问题描述】:

在禁用 curl 的主机上使用 curl 有什么替代方法吗?

【问题讨论】:

    标签: php curl libcurl


    【解决方案1】:

    http://www.phpclasses.org充满了这些“替代品”,你可以试试这个:http://www.phpclasses.org/browse/package/3588.html

    【讨论】:

      【解决方案2】:

      要通过 HTTP 获取内容,首先可以尝试使用 file_get_contents ;您的主机可能没有禁用 http:// 流:

      $str = file_get_contents('http://www.google.fr');
      

      这可能会被禁用(见allow_url_fopen);有时是……


      如果它被禁用,您可以尝试使用 fsockopen ;手册中给出的示例说明了这一点(引用)

      $fp = fsockopen("www.example.com", 80, $errno, $errstr, 30);
      if (!$fp) {
          echo "$errstr ($errno)<br />\n";
      } else {
          $out = "GET / HTTP/1.1\r\n";
          $out .= "Host: www.example.com\r\n";
          $out .= "Connection: Close\r\n\r\n";
          fwrite($fp, $out);
          while (!feof($fp)) {
              echo fgets($fp, 128);
          }
          fclose($fp);
      }
      

      考虑到它是相当低级的,虽然(您正在直接使用套接字,而 HTTP 协议并不是那么简单),使用使用它的库将使您的生活更轻松。

      例如,您可以查看 snoopyhere 就是一个例子。

      【讨论】:

      • file_get_contents 不能用于 POST ;使用 Snoopy,查看自述文件,提交方法可能会。
      • 优秀的帖子。不过,我建议不熟悉 HTTP 的人更容易使用 HTTP/1.0。
      【解决方案3】:

      您可以使用 PHP 编写一个普通的 curl 服务器脚本并将其放置在启用 curl 的主机上,当您需要 curl 时 - 您可以在需要时从无 curl 的机器上进行客户端调用,它会返回您需要的数据。可能是一个奇怪的解决方案,但曾经很有帮助。

      【讨论】:

        【解决方案4】:

        此线程中的所有答案都提供了有效的解决方法,但您应该记住一件事。无论出于何种原因,您的主机都认为通过 PHP 代码从您的 Web 服务器发出 HTTP 请求是“坏事”,因此禁用(或未启用)curl 扩展。如果您找到解决方法并且他们注意到他们会以其他方式阻止您的请求,那么这是一个非常好的机会。除非出于政治原因迫使您使用此特定主机,否则如果需要发出 http 请求,请认真考虑将您的应用/页面移至其他地方。

        【讨论】:

          猜你喜欢
          • 2012-02-20
          • 2014-07-30
          • 2021-05-02
          • 2011-03-30
          • 2011-10-21
          • 2011-08-26
          • 2011-08-30
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多