我正在使用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连接来删除文件..或者我设置什么选项基本上取消设置此选项?
答案 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);
如此处讨论