2017-02-12 6 views
0

Я использую Phpseclib для извлечения файлов с удаленного сервера. Все работает нормально, но когда я пытался застегнуть папку для загрузки. Почтовый файл, созданный с использованием кода ниже, остается пустым. Я не понимаю, как это сделать. Что-то не так в моем коде?Не удается zip-папка на удаленном сервере

$sftp = new Net_SFTP($host); 

if (!$sftp->login($user, $password)) { 
    exit('login failed'); 
} 

$sftp->mkdir($zipfolder); 
$sftp->put($zipfolder.'/'.$file, $sftp->get($file)); 

$sftp->enablePTY(); 
$sftp->exec('cd '.$filepath.' && zip '.$zipfilename.' '.$zipfolder); 
+0

'sftp' сам не поддерживает EXEC. Вам нужно 'ssh' сделать' exec() '. – Jakuje

+0

@Jakuje - 'SFTP', в phpseclib, расширяет' SSH2'. Таким образом, он наследует все те же методы. – neubert

+0

@neubert Это верно, но если у вас нет доступа к SSH на этот сервер, вы ничего не можете сделать по протоколу SFTP. Он не поддерживает выполнение определенных команд. – Jakuje

ответ

1

В каталоге ZIP Вы должны написать:

$sftp->exec('cd '.$filepath.' && zip -r '.$zipfilename.' '.$zipfolder); 
+0

Я попытался снова использовать функцию $ sftp-> exec. По-видимому, мы можем напрямую использовать SFTP для вызова функции SSH. Мне не удалось заархивировать файл, используя команду, поскольку команда zip не была в моем COPSSH. После добавления команды zip приведенный выше код работал отлично. Спасибо Адаму! – kherP

Смежные вопросы