在没有执行文件的情况下创建压缩或焦.gz存档

2022-08-30 14:27:18

有没有安全的方法来创建一个zip存档,或tar.gz从php不使用exec命令?

谢谢


答案 1

如果你想创建 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;
}

答案 2

您可以使用 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);

推荐