Phar::__construct

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

Phar::__construct构造 Phar 存档对象

描述

public Phar::__construct(string $filename, int $flags = FilesystemIterator::SKIP_DOTS | FilesystemIterator::UNIX_PATHS, ?string $alias = null)

参数

filename

现有 Phar 存档或要创建的存档的路径。文件名扩展名必须包含 .phar。

flags

要传递给父类 RecursiveDirectoryIterator 的标志。

alias

在调用流功能时,此 Phar 存档应使用此别名引用。

错误/异常

如果调用两次,则抛出 BadMethodCallException,如果无法打开 phar 存档,则抛出 UnexpectedValueException

示例

示例 #1 Phar::__construct() 示例

<?php
try {
$p = new Phar('/path/to/my.phar', FilesystemIterator::CURRENT_AS_FILEINFO | FilesystemIterator::KEY_AS_FILENAME,
'my.phar');
} catch (
UnexpectedValueException $e) {
die(
'Could not open my.phar');
} catch (
BadMethodCallException $e) {
echo
'technically, this cannot happen';
}
// this works now
echo file_get_contents('phar://my.phar/example.txt');
// and works as if we had typed
echo file_get_contents('phar:///path/to/my.phar/example.txt');
?>

添加笔记

用户贡献的笔记 2 个笔记

myselfasunder at findmenow dot gmail dot com
14 年前
Zip 支持似乎不稳定,因为仅仅尝试使用启用了 'zlib' 和 'zip' 扩展的 7-Zip 创建的 Zip 文件打开会导致以下错误

错误:无法转换 phar 存档 "C:/Development/webdir/public_html/TestPhar.zip",无法打开条目 "TestPhar/" 内容:phar 错误:基于 zip 的 phar "C:/Development/webdir/public_html/TestPhar.zip" 内部损坏(文件 "TestPhar/" 的本地标头与中央目录不匹配)

坚持使用 GZ 和 BZ2(但不要忘记在必要时启用 BZ2 扩展)。

Phar 只能打开可执行的 Phar,而 PharData 只能打开不可执行的 Phar。两者都能够在两种格式之间进行转换。

但是,无论 Phar 是否可执行,您都可以使用 Phar 流包装器引用 Phar 中的文件(file_get_contents('phar://<Phar file>/subdirectory/subdirectory/somefile.txt'))。

Dustin Oprea
Christian
14 年前
在启用 safe_mode 时无法创建新的存档!您只会返回“Phar 创建或打开失败”错误。
这适用于 PHP 5.3.2 中的 Phar 和 PharData。
To Top