在没有执行文件的情况下创建压缩或焦.gz存档
有没有安全的方法来创建一个zip存档,或tar.gz从php不使用exec命令?
谢谢
如果你想创建 tar.gz 并且你使用的是 PHP 5.3+,你可以使用 PharData 类:
try
{
$a = new PharData('archive.tar');
// ADD FILES TO archive.tar FILE
$a->addFile('data.xls');
$a->addFile('index.php');
// COMPRESS archive.tar FILE. COMPRESSED FILE WILL BE archive.tar.gz
$a->compress(Phar::GZ);
// NOTE THAT BOTH FILES WILL EXISTS. SO IF YOU WANT YOU CAN UNLINK archive.tar
unlink('archive.tar');
}
catch (Exception $e)
{
echo "Exception : " . $e;
}
您可以使用 PHP 的 Zip 类创建 zip 文件,并使用 ZLib 创建 gzip 文件。
创建文件:.zip
$zip = new ZipArchive();
$res = $zip->open('test.zip', ZipArchive::CREATE);
$zip->addFromString('test.txt', 'file content goes here');
$zip->addFile('data.txt', 'entryname.txt');
$zip->close();
创建文件:.gz
$file = "test.txt";
$gzfile = "test.gz";
$fp = gzopen($gzfile, 'w9'); // w == write, 9 == highest compression
gzwrite($fp, file_get_contents($file));
gzclose($fp);