Загрузка папки с phpseclib Net SFTP.get не работает


Я пытаюсь получить доступ к файлу на сервере папок SFTP с помощью phpseclib. Но когда я пытаюсь использовать $sftp->get, он возвращает false. Я вообще не знаю, как отладить проблему.

public function get_file_from_ftps_server()
{
    $sftp = new \phpseclib\Net\SFTP(getenv('INSTRUM_SERVER'));
    if (!$sftp->login(getenv('INSTRUM_USERNAME'), getenv('INSTRUM_PASSWORD'))) {
        exit('Login Failed');
    }

    $this->load->helper('file');           
    $root  = dirname(dirname(__FILE__));
    $root .= '/third_party/collections_get/';
    $path_to_server = 'testdownload/';
    $result = $sftp->get($path_to_server, $root);

    var_dump($result);
}

В $result я получаю false, и я не уверен, почему это происходит, я читал их документацию, но все еще не уверен. Root - это каталог, в котором я хочу хранить свою информацию. Прямо сейчас я только добавил trial.xml файл там, но также интересно, как я могу получить несколько файлов, если он находится в папка.

Вот изображение структуры сервера:

structure

Author: Christian, 2017-11-16

2 answers

Обычно, когда я использую sftp, я обычно меняю каталог, а затем пытаюсь загрузить информацию.

$sftp->pwd(); // This will show you are in the root after connection.
$sftp->chdir('./testdownload'); // this will go inside the test directory.
$get_path = $sftp->pwd()
//If you want to download multiple data, use
$x = $sftp->nlist();
//Loop through `x` and then download the file using.
$result = $sftp->get($get_path); // Normally I use the string information that is returned and then download using

file_put_contents($root, $result);

// Root is your directory, and result is the string.
 3
Author: XAF, 2017-11-21 18:31:37

Метод Net_SFTP.get может загружать только один файл. Вы не можете использовать его для загрузки целого каталога.

Если вы хотите загрузить весь каталог, вам нужно использовать один из методов "списка" (Net_SFTP.nlist или Net_SFTP.rawlist), чтобы получить список файлов, а затем загрузить файлы по одному.

 1
Author: Martin Prikryl, 2017-11-16 15:16:29