Phar::decompress

(PHP 5 >= 5.3.0, PHP 7, PHP 8, PECL phar >= 2.0.0)

Phar::decompress解压缩整个 Phar 档案

描述

public Phar::decompress(?string $extension = null): ?Phar

注意:

此方法要求 php.ini 设置 phar.readonly0 才能对 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 对象,失败时返回 null

错误/异常

如果 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
?>

参见

添加说明

用户贡献的说明 1 说明

0
shevadas at gmail dot com
8 年前
decompress() 会截断第一个句点后的文件名中的任何部分,因为它假定它是扩展名的一部分。例如,如果你的 PharData 档案名为“views-3.x-3.13.tar.gz”,调用其上的 decompress 会创建一个名为“views-3.tar”的 tar 文件。见 https://bugs.php.net/bug.php?id=58852
To Top