4

最初にリモート FTP サーバーからファイルのリストを取得するために cURL を使用しています。次に、同じ 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接続を再利用してファイルを削除できるように、上記のオプションを削除したい..または、基本的にこのオプションの設定を解除するには、どのオプションを設定しますか?

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 に答える