El contenedor de archivo Phar

Un contenedor Phar es un simple archivo PHP. El contenedor mínimo contiene:

<?php __HALT_COMPILER();

Un contenedor debe contener al menos el token __HALT_COMPILER(); como conclusión. Típicamente, un contenedor contendrá las siguientes funcionalidades de carga:

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

No hay restricciones sobre el contenido de un contenedor Phar, excepto la necesidad de concluir con __HALT_COMPILER();. La etiqueta de cierre PHP

?>
puede ser incluida u omitida, pero no puede haber más de un espacio entre el ; y la etiqueta de cierre
?>
, de lo contrario la extensión phar no será capaz de leer el manifiesto del archivo.

En un archivo phar basado en tar o zip, el contenedor se almacena en el archivo .phar/stub.php. El contenedor por defecto de los archivos Phar basados en phar contiene aproximadamente 7ko de código para extraer el contenido del phar y ejecutarlo. Consulte la función Phar::createDefaultStub() para más detalles.

El alias phar se almacena, en el caso de un archivo phar basado en tar o zip, en el archivo .phar/alias.txt como texto plano.

add a note

User Contributed Notes 1 note

up
5
Frank Li
2 years 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