4

我正在使用 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 连接来删除文件.. 或者我设置什么选项来基本上取消设置这个选项?

4

5 回答 5

4

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

curl_setopt($tmp["curl"], CURLOPT_QUOTE, null);
于 2012-12-09T10:07:35.913 回答
3

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

在尝试了上述所有建议和其他建议后,都没有奏效,我遇到了正确的解决方案......

将文件重置为默认的 STDOUT

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

如果您想这样做,请不要忘记重新启用返回传输

curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
于 2014-09-19T14:39:08.627 回答
2

这对我有用:

curl_setopt($tmp["curl"], CURLOPT_FILE, STDOUT);
于 2012-12-09T10:30:21.513 回答
1

如果你也看看这篇文章,基本上将 CURLOPT_FILE 选项重置为默认的 STDOUT(NULL 会导致警告!)。

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

希望这对也在寻找这个答案的人有所帮助。

于 2013-10-11T19:24:08.493 回答
0

只是将它设置为NULL应该工作

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

如此处所讨论

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

于 2012-12-09T10:07:46.027 回答