cURL和curl_setopt-如何删除选项

时间:2012-12-09 10:04:44

标签: php curl

我正在使用cURL首先从远程FTP服务器获取文件列表。然后我使用相同的Curl Handle下载该文件。下载后,我再次使用相同的句柄删除文件。

当我使用以下代码删除文件时,它确实成功了:

curl_setopt($tmp["curl"], CURLOPT_QUOTE, array("DELE " . $tmp["file"]));

虽然我在日志中得到以下内容:

[PHP Warning] curl_exec(): CURLOPT_FILE resource has gone away, resetting to default [l:52]

原因是当我第一次下载文件时,我设置了以下选项:

curl_setopt($tmp["curl"], CURLOPT_FILE, $tmp["file_handle"]);

我的问题是,如何解除我添加的选项?我想删除上面的选项,以便我可以重用curl连接来删除文件..或者我设置什么选项基本上取消设置此选项?

5 个答案:

答案 0 :(得分:3)

我想使用相同的curl实例保存到文件,然后请求页面并保存到变量。

在尝试了所有上述和其他建议之后,没有一个有效,我来到了正确的解决方案....

将文件重置为默认STDOUT

curl_setopt($ch, CURLOPT_FILE, fopen('php://stdout','w'));

不要'忘记重新启用返回转移,如果这是你想做的事情

curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

答案 1 :(得分:2)

您可以通过将值设置为null取消设置选项,如下所示:

curl_setopt($tmp["curl"], CURLOPT_QUOTE, null);

答案 2 :(得分:2)

这对我有用:

curl_setopt($tmp["curl"], CURLOPT_FILE, STDOUT);

答案 3 :(得分:1)

如果您look at this post,基本上将CURLOPT_FILE选项重置为默认STDOUT(NULL将导致警告!)。

然后,如果您要将输出捕获到字符串,则需要将CURLOPT_RETURNTRANSFER选项显式设置为true以覆盖文件选项,即使您之前已设置它也是如此。

希望这有助于那些也在寻找这个答案的人。

答案 4 :(得分:0)

将其设置为NULL应该可以正常工作

curl_setopt($tmp["curl"], CURLOPT_FILE, NULL);

如此处讨论

http://curl.haxx.se/mail/lib-2012-03/0082.html