2017-02-12 20 views
0

私はPhpseclibを使用してリモートサーバからファイルを取得しています。すべてがうまく動作しますが、ダウンロードするフォルダを圧縮しようとしました。以下のコードを使用して作成したzipファイルは空のままです。私はそれが動作するようにする方法が考えられていません。私のコードに何か間違っていますか?あなたが書くべき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をサポートしていません。 'exec()'には 'ssh' doが必要です。 – Jakuje

+0

@Jakuje - phpseclibの 'SFTP'は' SSH2'を拡張しています。このように、すべての同じメソッドを継承します。 – neubert

+0

@neubertそれは当てはまりますが、そのサーバーへのSSHアクセスがない場合、SFTPプロトコルでは何もできません。特定のコマンドの実行をサポートしていません。 – Jakuje

答えて

1

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

$ sftp-> exec関数をもう一度使ってみました。明らかに、SFTPを直接使用してSSH機能を呼び出すことができます。 zipコマンドが私のCOPSSHにないので、私はコマンドを使ってファイルを圧縮することができませんでした。 zipコマンドを追加した後、上記のコードは正常に機能しました。ありがとうございました! – kherP

関連する問題