在已禁用curl的主机上是否有使用curl的替代方法?
答案 0 :(得分:7)
要通过HTTP获取内容,首先,您可以尝试使用file_get_contents
;您的主机可能没有禁用http:// stream:
$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协议并不那么简单),使用使用它的库将使你的生活更轻松。
答案 1 :(得分:3)
http://www.phpclasses.org充满了这些“替代品”,你可以尝试这个:http://www.phpclasses.org/browse/package/3588.html
答案 2 :(得分:2)
您可以使用PHP编写一个简单的curl服务器脚本并将其放在启用curl的托管上,当您需要curl时 - 在需要时从无卷机器进行客户端调用,它将返回您需要的数据。可能是一个奇怪的解决方案,但有一次有用。
答案 3 :(得分:2)
此主题中的所有答案都提供了有效的解决方法,但您应该记住一件事。无论出于何种原因,您的主机都认为通过PHP代码从您的Web服务器发出HTTP请求是一件“坏事”,因此禁用(或未启用)curl扩展。如果你找到一个解决方法并且他们注意到它们会以其他方式阻止你的请求,那么这是一个非常好的机会。除非有政治原因迫使您使用此特定主机,否则请认真考虑将应用程序/页面转移到其他地方,如果它需要发出http请求。