decompress() 会截断第一个句点后的文件名中的任何部分,因为它假定它是扩展名的一部分。例如,如果你的 PharData 档案名为“views-3.x-3.13.tar.gz”,调用其上的 decompress 会创建一个名为“views-3.tar”的 tar 文件。见 https://bugs.php.net/bug.php?id=58852
(PHP 5 >= 5.3.0, PHP 7, PHP 8, PECL phar >= 2.0.0)
Phar::decompress — 解压缩整个 Phar 档案
注意:
此方法要求 php.ini 设置
phar.readonly
为0
才能对 Phar 对象起作用。否则,将抛出 PharException。
对于基于 tar 和基于 phar 的 phar 档案,此方法解压缩整个档案。
对于基于 Zip 的 phar 档案,此方法会抛出异常而失败。必须启用 zlib 扩展才能解压缩使用 gzip 压缩的档案,并且必须启用 bzip2 扩展才能解压缩使用 bzip2 压缩的档案。与所有修改 phar 内容的功能一样,phar.readonly INI 变量必须关闭才能成功。
此外,此方法会自动更改档案的文件扩展名,默认情况下为 phar 档案的 .phar
,或者为基于 tar 的 phar 档案的 .phar.tar
。或者,可以使用第二个参数指定文件扩展名。
extension
对于解压缩,默认文件扩展名为 .phar
和 .phar.tar
。使用此参数指定另一个文件扩展名。请注意,所有可执行的 phar 档案必须在文件名中包含 .phar
。
如果 phar.readonly INI 变量已开启,或者 zlib 扩展不可用,或者 bzip2 扩展未启用,则会抛出 BadMethodCallException。
版本 | 描述 |
---|---|
8.0.0 |
extension 现在可以为 null。 |
示例 #1 一个 Phar::decompress() 示例
<?php
$p = new Phar('/path/to/my.phar', 0, 'my.phar.gz');
$p['myfile.txt'] = 'hi';
$p['myfile2.txt'] = 'hi';
$p3 = $p2->decompress(); // 创建 /path/to/my.phar
?>
decompress() 会截断第一个句点后的文件名中的任何部分,因为它假定它是扩展名的一部分。例如,如果你的 PharData 档案名为“views-3.x-3.13.tar.gz”,调用其上的 decompress 会创建一个名为“views-3.tar”的 tar 文件。见 https://bugs.php.net/bug.php?id=58852