The phar file format is literally laid out as stub/manifest/contents/signature, and stores the crucial information of what is included in the phar archive in its manifest.
The Phar manifest is a highly optimized format that allows per-file specification of file compression, file permissions, and even user-defined meta-data such as file user or group. All values greater than 1 byte are stored in little-endian byte order, with the exception of the API version, which for historical reasons is stored as 3 nibbles in big-endian order.
All unused flags are reserved for future use, and must not be used to store custom information. Use the per-file meta-data facility to store customized information about particular files.
The basic file format of a Phar archive manifest is as follows:
| Size in bytes | Description | 
|---|---|
| 4 bytes | Length of manifest in bytes (1 MB limit) | 
| 4 bytes | Number of files in the Phar | 
| 2 bytes | API version of the Phar manifest (currently 1.0.0) | 
| 4 bytes | Global Phar bitmapped flags | 
| 4 bytes | Length of Phar alias | 
| ?? | Phar alias (length based on previous) | 
| 4 bytes | Length of Phar metadata (0 for none) | 
| ?? | Serialized Phar Meta-data, stored in serialize() format | 
| at least 24 * number of entries bytes | entries for each file |