【发布时间】:2010-11-23 19:45:54
【问题描述】:
在禁用 curl 的主机上使用 curl 有什么替代方法吗?
【问题讨论】:
在禁用 curl 的主机上使用 curl 有什么替代方法吗?
【问题讨论】:
http://www.phpclasses.org充满了这些“替代品”,你可以试试这个:http://www.phpclasses.org/browse/package/3588.html
【讨论】:
要通过 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 协议并不是那么简单),使用使用它的库将使您的生活更轻松。
【讨论】:
您可以使用 PHP 编写一个普通的 curl 服务器脚本并将其放置在启用 curl 的主机上,当您需要 curl 时 - 您可以在需要时从无 curl 的机器上进行客户端调用,它会返回您需要的数据。可能是一个奇怪的解决方案,但曾经很有帮助。
【讨论】:
此线程中的所有答案都提供了有效的解决方法,但您应该记住一件事。无论出于何种原因,您的主机都认为通过 PHP 代码从您的 Web 服务器发出 HTTP 请求是“坏事”,因此禁用(或未启用)curl 扩展。如果您找到解决方法并且他们注意到他们会以其他方式阻止您的请求,那么这是一个非常好的机会。除非出于政治原因迫使您使用此特定主机,否则如果需要发出 http 请求,请认真考虑将您的应用/页面移至其他地方。
【讨论】: