这是一个非常令人恼火的错误。不过您可以使用此方法解决它
$data = 'some.test.string';
$phar = new PharData('test.tar');
$phar->compress(Phar::GZ, substr($data, strpos($data, '.') + 1));
(PHP 5 >= 5.3.0, PHP 7, PHP 8, PECL phar >= 2.0.0)
PharData::compress — 使用 Gzip 或 Bzip2 压缩压缩整个 tar/zip 档案
对于 tar 档案,此方法使用 gzip 压缩或 bzip2 压缩压缩整个档案。生成的档案可以使用 gunzip 命令/bunzip 命令进行处理,或者使用 Phar 扩展直接透明地访问。
对于 zip 档案,此方法将引发异常。必须启用 zlib 扩展才能使用 gzip 压缩进行压缩,必须启用 bzip2 扩展才能使用 bzip2 压缩进行压缩。
此外,此方法会自动重命名档案,追加 .gz
、.bz2
或如果传递 Phar::NONE
以删除压缩则删除扩展名。或者,可以使用第二个参数指定档案扩展名。
compression
压缩必须是 Phar::GZ
、Phar::BZ2
之一以添加压缩,或 Phar::NONE
以删除压缩。
extension
默认情况下,扩展名为 .tar.gz
或 .tar.bz2
(用于压缩 tar),以及 .tar
(用于解压缩)。
如果 zlib 扩展不可用或 bzip2 扩展未启用,则抛出 BadMethodCallException。
版本 | 描述 |
---|---|
8.0.0 |
extension 现在可以为空。 |
示例 #1 PharData::compress() 示例
<?php
$p = new PharData('/path/to/my.tar');
$p['myfile.txt'] = 'hi';
$p['myfile2.txt'] = 'hi';
$p1 = $p->compress(Phar::GZ); // 复制到 /path/to/my.tar.gz
$p2 = $p->compress(Phar::BZ2); // 复制到 /path/to/my.tar.bz2
$p3 = $p2->compress(Phar::NONE); // 异常:/path/to/my.tar 已存在
?>
这是一个非常令人恼火的错误。不过您可以使用此方法解决它
$data = 'some.test.string';
$phar = new PharData('test.tar');
$phar->compress(Phar::GZ, substr($data, strpos($data, '.') + 1));
此方法会破坏文件名中第一个点之后的任何内容,并将其替换为 zip 扩展名(.tar.gz 等)。
示例
<?php
$tarfile = "2.5.0.0-RC1.tar";
$pd = new \PharData($tarfile);
$pd->buildFromDirectory("/path/to/contents");
$pd->compress(\Phar::GZ);
?>
最终得到一个名为“2.tar.gz”的文件。