我对cURL有疑问。我正在使用cURL这个函数:
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
只有这导致错误:“消息:curl_setopt()[function.curl-setopt]:在safe_mode或open_basedir设置为”
时,无法激活CURLOPT_FOLLOWLOCATION所以我要求我的托管服务提供商解决这个问题,他们做到了。但是,这真的很愚蠢,他们在我的bin目录中放了一个“curl”文件。我不知道如何在我的PHP脚本中包含这个:S。
之前从未这样做过,但任何人都可以帮助我。我真的被卡住了。我希望我发布了足够的信息!
Tnx in advanced!
所有重要回复的Tnx。但是我如何在这段代码中使用“exec()”?
// create a new cURL resource
$ch = curl_init();
// set URL and other appropriate options
curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch, CURLOPT_TRANSFERTEXT, TRUE);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 30);
curl_setopt($ch, CURLOPT_URL, $articleUrl);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_MAXREDIRS, 5);
// grab URL and pass it to $grabArticle
$grabArticle = curl_exec($ch);
编辑2: 好的,我几乎让它工作了:)。当我在putty中运行它时工作正常,但在我的php脚本中没有任何反应:(
我跑了这个:
$grabArticle = exec('/home/twittern/bin/curl -L -m 30 -w url_effective --max-redirs 5 http://fok.nl/415758');
echo $grabArticle;
我做错了什么?
答案 0 :(得分:3)
它们要求您使用外部命令行版本,而不是在PHP中使用内置的cURL函数。
使用PHP exec()函数调用程序,命令行选项可以在curl man page上找到。
鉴于您可能需要完整响应,您可能需要将passthru()与输出缓冲一起使用,或将输出保存到(临时)文件。
答案 1 :(得分:1)
PHP curl不依赖于可用的卷曲箱。 (PHP自4.0.2起支持curl)
您的托管服务提供商只需要确保您的PHP ini已关闭safe_mode
。
但是考虑到处理这个(给你一个curl二进制文件)的方式,看起来你应该使用exec()
来调用它。
就个人而言,我建议你找一个更好的主人。
答案 2 :(得分:1)
您的提供商很糟糕。回调它们并让它们重新编译php以包含curl支持。
否则你会被迫直接调用curl。
$result = exec("/bin/curl http://www.foobar.com");