Удалить файл через SFTP, используя CURL - PullRequest
1 голос
/ 25 июня 2019

Я хочу удалить файл с помощью curl

Я использую SFTP и ниже приведен код, который я использую.Это не работает для меня

    $ch = curl_init();
    curl_setopt($ch, CURLOPT_VERBOSE, true);
    curl_setopt($ch, CURLOPT_URL, "sftp://use:@101.101.101.101/");
    curl_setopt($ch, CURLOPT_PROTOCOLS, CURLPROTO_SFTP);
    curl_setopt($ch, CURLOPT_PORT, 51402);
    curl_setopt($ch, CURLOPT_SSH_PRIVATE_KEYFILE, '/home/web/.ssh/id_rsa');
    curl_setopt($ch, CURLOPT_SSH_PUBLIC_KEYFILE, '/home/web/.ssh/id_rsa.pub');
    curl_setopt($ch, CURLOPT_SSH_AUTH_TYPES, CURLSSH_AUTH_PUBLICKEY);
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_QUOTE, array("DELE /dispatch/confirm/W00027478.csv"));
    $result = curl_exec($ch);
    $error_no = curl_errno($ch);
    curl_close($ch);

    if ($error_no == 0) {
        echo "Delete File $filename<br>";
    } else {
        echo "File Not Delete $filename<br>";
    }

1 Ответ

2 голосов
/ 25 июня 2019

DELE не является действительной командой SFTP, я думаю, что вы ищете команду rm, она должна выглядеть примерно так:

curl_setopt($ch, CURLOPT_QUOTE, array("rm ".escapeshellarg("/dispatch/confirm/W00027478.csv"));

и в следующий раз, когда у вас возникнут проблемы с curl, включите CURLOPT_VERBOSEи сделайте

var_dump(curl_errno($ch),curl_error($ch));

и опубликуйте как журнал VERBOSE, так и вывод curl_errno () и вывод curl_error ()

...