Php 无法压缩远程服务器中的文件夹

Php 无法压缩远程服务器中的文件夹,php,sftp,phpseclib,Php,Sftp,Phpseclib,我正在使用Phpseclib从远程服务器检索文件。一切正常,但当我试图压缩一个文件夹下载。我使用下面的代码创建的zip文件仍然是空的。我不知道如何使它工作。我的代码有问题吗 $sftp = new Net_SFTP($host); if (!$sftp->login($user, $password)) { exit('login failed'); } $sftp->mkdir($zipfolder); $sftp->put($zipfolder.'/'.$fil

我正在使用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);

要压缩目录,您应该编写:

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

sftp
本身不支持exec。您需要
ssh
执行
exec()
@Jakuje-
SFTP
,在phpseclib中扩展
SSH2
。因此,它继承了所有相同的方法。@neubert这是真的,但如果您没有对该服务器的SSH访问权限,那么就无法通过SFTP协议执行任何操作。它不支持执行特定命令。@kherP-看起来您基本上是在将
$file
~
移动到
~/$zipfolder
?如果是这样的话,
cp$file$zipfolder
可能是一种更快的方法。还有,我想试试亚当的主意。最后,我不确定
enablePTY()
在您的代码段中的意义是什么..大家好,我尝试了Adam的想法,也尝试了您的想法。我可以压缩文件,但下载后无法提取压缩文件。知道为什么会发生这种情况吗?我再次尝试使用$sftp->exec函数。显然,我们可以直接使用SFTP调用SSH函数。我无法使用该命令压缩文件,因为zip命令不在我的COPSSH中。添加zip命令后,上述代码工作正常。谢谢你,亚当!