在没有exec的情况下创建zip或tar.gz存档

Ali*_*imi 27 php zip tar

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

谢谢

Déj*_*dić 43

如果你想创建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;
}
Run Code Online (Sandbox Code Playgroud)

  • 在取消链接archive.tar之前确保文件仍未打开 - 在尝试示例时遇到错误 - 未设置($ a)完成了诀窍^^ (10认同)

fox*_*oxy 22

您可以使用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();
Run Code Online (Sandbox Code Playgroud)

创建.gz文件:

$file = "test.txt";
$gzfile = "test.gz";
$fp = gzopen($gzfile, 'w9'); // w == write, 9 == highest compression
gzwrite($fp, file_get_contents($file));
gzclose($fp);
Run Code Online (Sandbox Code Playgroud)

  • 当然!只需查看上面链接的文档 - 它很容易遵循. (3认同)