它不起作用
致命错误:未捕获的异常“UnexpectedValueException”,消息为“无法转换 phar 存档“C:/xxxxxxxxxxx.zip”,无法打开条目“sub-directory/”内容:phar 错误:基于 zip 的 phar“C:/xxxxxxxxxxx.zip”内部损坏(文件“sub-directory/”的本地头与中央目录不匹配)”,位于 C:\xxxxxxxxxxx.php 第 5 行
(PHP 5 >= 5.3.0, PHP 7, PHP 8, PECL phar >= 2.0.0)
PharData::convertToExecutable — 将不可执行的 tar/zip 存档转换为可执行的 phar 存档
$format
= null
, ?int $compression
= null
, ?string $extension
= null
): ?Phar注意:
此方法需要 php.ini 设置
phar.readonly
设置为0
才能对 Phar 对象起作用。否则,将抛出 PharException。
此方法用于将不可执行的 tar 或 zip 存档转换为可执行的 phar 存档。可以使用三种可执行文件格式中的任何一种(phar、tar 或 zip),也可以执行整个存档压缩。
如果未指定任何更改,则此方法将抛出 BadMethodCallException。
如果成功,该方法将在磁盘上创建一个新的存档并返回一个 Phar 对象。旧存档不会从磁盘中删除,应在进程完成后手动完成。
format
这应该是 Phar::PHAR
、Phar::TAR
或 Phar::ZIP
之一。如果设置为 null
,则将保留现有文件格式。
compression
这应该是 Phar::NONE
(不进行整个存档压缩)、Phar::GZ
(基于 zlib 的压缩)和 Phar::BZ2
(基于 bzip 的压缩)之一。
extension
此参数用于覆盖转换后的存档的默认文件扩展名。请注意,所有基于 zip 和 tar 的 phar 存档必须在其文件扩展名中包含 .phar
,才能被处理为 phar 存档。
如果转换为基于 phar 的存档,则默认扩展名为 .phar
、.phar.gz
或 .phar.bz2
,具体取决于指定的压缩方式。对于基于 tar 的 phar 存档,默认扩展名为 .phar.tar
、.phar.tar.gz
和 .phar.tar.bz2
。对于基于 zip 的 phar 存档,默认扩展名为 .phar.zip
。
此方法在无法压缩、指定了未知的压缩方法、请求的存档正在使用 Phar::startBuffering() 进行缓冲但尚未使用 Phar::stopBuffering() 结束、写支持被禁用时抛出 BadMethodCallException,以及在 phar 创建过程中遇到任何问题时抛出 PharException。
版本 | 描述 |
---|---|
8.0.0 |
format 、compression 和 localName 现在可以为空。 |
示例 #1 一个 PharData::convertToExecutable() 示例
使用 PharData::convertToExecutable()
<?php
try {
$tarphar = new PharData('myphar.tar');
// 将其转换为 phar 文件格式
// 注意 myphar.tar *不会* 被解除链接
$phar = $tarphar->convertToExecutable(Phar::PHAR); // 创建 myphar.phar
$phar->setStub($phar->createDefaultStub('cli.php', 'web/index.php'));
// 创建 myphar.phar.tgz
$compressed = $tarphar->convertToExecutable(Phar::TAR, Phar::GZ, '.phar.tgz');
} catch (Exception $e) {
// 在这里处理错误
}
?>
它不起作用
致命错误:未捕获的异常“UnexpectedValueException”,消息为“无法转换 phar 存档“C:/xxxxxxxxxxx.zip”,无法打开条目“sub-directory/”内容:phar 错误:基于 zip 的 phar“C:/xxxxxxxxxxx.zip”内部损坏(文件“sub-directory/”的本地头与中央目录不匹配)”,位于 C:\xxxxxxxxxxx.php 第 5 行