CakeFest 2024: The Official CakePHP Conference

Le conteneur de fichier Phar

Un conteneur Phar est un simple fichier PHP. Le conteneur minimal contient :

<?php __HALT_COMPILER();

Un conteneur doit contenir au moins le jeton __HALT_COMPILER(); en guise de conclusion. Typiquement, un conteneur comportera les fonctionnalités de chargement suivantes :

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

Il n'y a aucune restriction sur le contenu d'un conteneur Phar, si ce n'est le besoin d'être conclu par __HALT_COMPILER();. Le tag fermant PHP

?>
peut être inclus ou omis, mais il ne peut y avoir plus d'un espace entre le ; et le tag fermant
?>
sans quoi l'extension phar ne sera pas capable de lire le manifeste de l'archive.

Dans une archive phar basée sur tar ou zip, le conteneur est stocké dans le fichier .phar/stub.php. Le conteneur par défaut des archives Phar basées sur phar contient approximativement 7ko de code pour extraire le contenu du phar et l'exécuter. Regardez la fonction Phar::createDefaultStub() pour davantage de détails.

L'alias phar est stocké, dans le cas d'une archive phar basée sur tar ou zip, dans le fichier .phar/alias.txt en tant que texte plein.

add a note

User Contributed Notes 1 note

up
1
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