2024 年日本 PHP 研討會

Phar 檔案存根

Phar 的存根是一個簡單的 PHP 檔案。最小可能的存根如下

<?php __HALT_COMPILER();

存根至少必須在其結尾包含 `__HALT_COMPILER();` 標記。通常,存根會包含如下所示的載入器功能

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

Phar stub 的內容沒有限制,唯一的要求是它必須以 __HALT_COMPILER(); 結尾。結尾的 PHP 標籤

?>
可以包含或省略,但在 ; 和結尾標籤
?>
之間不能超過一個空格,否則 phar 副檔名將無法處理 Phar 封存的 manifest。

在基於 tar 或 zip 的 phar 封存中,stub 儲存在 .phar/stub.php 檔案中。基於 phar 的 Phar 封存的預設 stub 包含大約 7k 的程式碼,用於提取 phar 的內容並執行它們。詳情請參閱 Phar::createDefaultStub()

phar 別名以純文字形式儲存在基於 tar 或 zip 的 phar 封存中的 .phar/alias.txt 檔案中。

新增註解

使用者貢獻的註解 1 則註解

2
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