最近有个新需要,需要对生成的文件通过sftp传至第三方服务器,想到最简便的方通就是借助linux 完成此功能,我们使用后了zip命令,但是对于windows下高版本的zip文件,unzip不是很好的支持,可借助于7za命令进行完美解压,实现代码如下
class LinuxZip{
/**
*
* @desc 执行linux zip命令
*/
public function shell_zip($zip,$shell_name){
$pwd = "1234";
$co = "zip -qj -P $pwd $zip $shell_name";
exec($co,$out);
return $out;
}
/**
*
* @desc 执行linux unzip命令
* $zipFile= "./Public/bh_xintuo.zip";
$unzipTo = "./Public/";
*/
public function shell_unzip($zipFile,$unzipTo){
$pwd = "1234";
$co = "7za -aoa -p$pwd x $zipFile -r -o$unzipTo";
exec($co,$out);
return $out;
}
}
调用方法:
$unzipTo = "./Public/";
$savepath = "./Public/ok.txt";
$arr_name = "./Public/maoyeye.zip";
BhSftpModel::getInstance()->shell_zip($arr_name,$savepath);
// BhSftpModel::getInstance()->shell_unzip($zipFile,$unzipTo);
安装7za就可以很完美的解压,安装命令如下
wget http://nchc.dl.sourceforge.net/project/p7zip/p7zip/9.20.1/p7zip_9.20.1_src_all.tar.bz2
tar -jxvf p7zip_9.20.1_src_all.tar.bz2
cd p7zip_9.20.1
sudo make
sudo make install