2010-11-18 190 views
1

我有一个关于cURL的问题。我使用卷曲与此功能:cURL不能正常工作!

curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); 

只有这是造成的错误:“消息:curl_setopt()[function.curl-SETOPT]:CURLOPT_FOLLOWLOCATION不能被激活在safe_mode设置时或open_basedir的被设置为”

所以我问我的托管服务提供商解决这个问题,他们做到了。但是,这真的很愚蠢,他们把一个“卷曲”文件放在我的bin目录中。我不知道如何将这个包含在我的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: 奥凯,我几乎得到它的工作:)。当我在腻子运行它工作得很好,但在我的PHP脚本没有任何反应:(

我运行此:

$grabArticle = exec('/home/twittern/bin/curl -L -m 30 -w url_effective --max-redirs 5 http://fok.nl/415758'); 
echo $grabArticle; 

任何事情我做错了

+0

那么,他们只给你一个卷曲可执行文件?这听起来像他们希望你用'exec'运行它。 – JAL 2010-11-18 20:42:11

+1

重新进行更新,您将不得不在命令行中重新构建这些选项,请参阅http://curl.haxx.se/docs/manpage.html – 2010-11-18 21:19:41

+0

嗯,那就是F * cked up:S。所以它会是这样的:$ grabArticle = exec('/ home/twittern/bin/curl'。$ articleUrl。'-A -L'); – iSenne 2010-11-18 21:27:36

回答

3

而不是在PHP中使用内置cURL函数,他们要求您使用外部命令行版本。

使用PHP exec()函数来调用程序,命令行选项可以在curl man page上找到。

鉴于您可能需要完整的响应,您可能需要使用passthru()进行输出缓冲或将输出保存到(临时)文件。

1

PHP卷曲没有按“T依靠卷曲箱可用。(PHP支持,因为默认情况下4.0.2卷曲)

你的托管服务提供商只需要确保你的PHP INI已经safe_mode关闭。

但考虑到处理方式(给你一个卷曲二进制),你应该使用exec()来调用它。

个人而言,我建议你找一个更好的主人。

+0

同意,但另一个主机是不是一个真正的选择:)。 – iSenne 2010-11-18 20:54:10

1

您的供应商很烂。回拨他们,让他们重新编译php以包含curl支持。

否则,你会被直接调用curl卡住。

$result = exec("/bin/curl http://www.foobar.com"); 
+0

他有curl支持编译,只是他有safe_mode或open_basedir生效。如果是共享主机,他们不太可能根据需要关闭这些安全措施。 – Orbling 2010-11-18 20:45:49

+0

我同意拜伦。吸:(真的很奇怪,因为通常他们是非常有益的。它是一个经销商托管平台顺便说一句:) – iSenne 2010-11-18 20:51:31

+0

有趣的是,如果他们离开安全模式,'exec()'也不会工作,会吗? – 2010-11-18 21:19:04