PHP Velho Oeste 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-архива.

В phar-архиве, основанном на tar или zip, заглушка хранится в   файле .phar/stub.php. Заглушка по умолчанию для Phar-архива,   основанного на phar, содержит приблизительно 7 килобайт кода для извлечения содержимого   Phar-архива и его выполнения. Смотрите Phar::createDefaultStub()   для более подробной информации.

В phar-архиве, основанном на tar или zip, псевдоним phar хранится в файле .phar/alias.txt в виде простого текста.

add a note

User Contributed Notes 1 note

up
2
Frank Li
1 year ago
> but there can be no more than 1 space between the ; and the close tag

there must be **exactly** 1 space, or "\n".
below is how php trims the ending tag.

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