cURL и curl_setopt - как да премахнете опция

Използвам 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 връзката, за да изтрия файла.. или каква опция да задам, за да деактивирам основно тази опция?


person Lock    schedule 09.12.2012    source източник


Отговори (5)


Вие деактивирате опция, като зададете стойността на null, така:

curl_setopt($tmp["curl"], CURLOPT_QUOTE, null);
person David Müller    schedule 09.12.2012
comment
Хм, това не проработи. Файлът се премахва успешно...но все още получава PHP известия: [09 дек. 21:13:20] предупреждение: [PHP предупреждение] curl_setopt(): предоставеният аргумент не е валиден ресурс за обработка на файл [l:51] [09 дек. 21 :13:20] предупреждение: [PHP предупреждение] curl_exec(): CURLOPT_FILE ресурсът е изчезнал, нулиране по подразбиране [l:53] - person Lock; 09.12.2012
comment
Това не задава настройките по подразбиране, няма начин да го направите. Това повикване може да доведе до невалидни резултати в някои случаи. В други случаи това ще доведе до фатална грешка (като заглавки или манипулатор на файл) - person John; 02.03.2021

Исках да използвам същия екземпляр на curl, за да запазя във файл, след това да поискам страница и да запазя в променлива.

След като изпробвах всички по-горе и други предложения, нито едно от които не проработи, попаднах на правилното решение....

нулиране на файла към STDOUT по подразбиране

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

не забравяйте да активирате отново обратния трансфер, ако това е, което искате да направите

curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
person Tmp2k    schedule 19.09.2014

Това проработи за мен:

curl_setopt($tmp["curl"], CURLOPT_FILE, STDOUT);
person Lock    schedule 09.12.2012
comment
Не го премахва от заглавките на заявките, а само го задава на нула. - person Genjo; 12.07.2017

Ако погледнете и тази публикация, основно нулирайте CURLOPT_FILE опция към стандартния STDOUT (NULL ще предизвика предупреждение!).

След това, ако възнамерявате да заснемете изхода в низ, трябва изрично да зададете опцията CURLOPT_RETURNTRANSFER на true, за да замените опцията за файл, дори ако сте я задали по-рано.

Надявам се това да помогне на някой, който също е търсил този отговор.

person CICDC    schedule 11.10.2013

просто задаване на NULL трябва да работи

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

както се обсъжда тук

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

person Florian Kasper    schedule 09.12.2012