PHP Conference Japan 2024

Phar 文件存根

Phar 的存根是一个简单的 PHP 文件。最小的存根如下所示

<?php __HALT_COMPILER();

存根至少必须在其结尾包含 __HALT_COMPILER(); 令牌。通常,存根将包含如下所示的加载器功能

<?php
Phar
::mapPhar();
include
'phar://myphar.phar/index.php';
__HALT_COMPILER();

Phar 存根的内容没有限制,除了必须以 __HALT_COMPILER(); 结尾的要求。结束的 PHP 标记

?>
可以包含或省略,但 ; 和结束标记
?>
之间最多只能有一个空格,否则 phar 扩展将无法处理 Phar 归档文件的清单。

在基于 tar 或 zip 的 phar 归档文件中,存根存储在 .phar/stub.php 文件中。基于 phar 的 Phar 归档文件的默认存根包含大约 7k 的代码,用于提取 phar 的内容并执行它们。有关更多详细信息,请参阅 Phar::createDefaultStub()

phar 别名存储在基于 tar 或 zip 的 phar 归档文件的 .phar/alias.txt 文件中,以纯文本格式存储。

添加注释

用户贡献的注释 1 条注释

Frank Li
2 年前
> 但 ; 和结束标记之间最多只能有一个空格

必须是 **正好** 一个空格,或者“\n”。
以下是 php 如何修剪结束标记的方式。

> seek_for("__HALT_COMPILER();");
> read_3_into(buffer);
> if ((*buffer == ' ' || *buffer == '\n') && *(buffer + 1) == '?' && *(buffer + 2) == '>') {
> do_things.
To Top