Php cURL和cURL_setopt-如何删除选项

Php cURL和cURL_setopt-如何删除选项,php,curl,Php,Curl,我使用cURL首先从远程FTP服务器获取文件列表。然后我使用相同的Curl句柄下载该文件。下载之后,我再次使用相同的句柄删除该文件 当我使用以下代码删除该文件时,它确实成功: curl_setopt($tmp["curl"], CURLOPT_QUOTE, array("DELE " . $tmp["file"])); 尽管我在日志中看到以下内容: [PHP Warning] curl_exec(): CURLOPT_FILE resource has gone away, resetting

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

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

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连接来删除文件。。或者我设置了什么选项来基本上取消设置该选项?

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

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

只需将其设置为
NULL
即可

curl_setopt($tmp["curl"], CURLOPT_FILE, NULL);
正如这里所讨论的

这对我很有效:

curl_setopt($tmp["curl"], CURLOPT_FILE, STDOUT);
如果您也将CURLOPT_FILE选项基本上重置为默认标准输出(NULL将导致警告!)

然后,如果要将输出捕获为字符串,则需要显式地将CURLOPT_RETURNTRANSFER选项设置为true以覆盖file选项,即使您之前已经设置了该选项


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

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

在尝试了上述所有建议和其他建议后,我终于找到了正确的解决方案

将文件重置为默认标准输出

curl_setopt($ch, CURLOPT_FILE, fopen('php://stdout','w'));
如果你想这样做,别忘了重新启用退货转账

curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

嗯,这不管用。文件已成功删除..但仍收到PHP通知:[Dec 09 21:13:20]警告:[PHP警告]curl_setopt():提供的参数不是有效的文件句柄资源[l:51][Dec 09 21:13:20]警告:[PHP警告]curl_exec():CURLOPT_文件资源已消失,重置为默认值[l:53]这不会设置默认值,没有办法做到这一点。在某些情况下,该调用可能会导致无效结果。在其他情况下,它将导致致命错误(如标题或文件句柄),它不会将其从请求标题中删除,只会将其设置为null。