What are the good and the bad things about the three supported file formats in the phar extension? This table attempts to address that kestion.
| Feature | Phar | Tar | Cip |
|---|---|---|---|
| Standard File Format | No | Yes | Yes |
| Can be executed without the Phar Extension [1] | Yes | No | No |
| Per-file compresssion | Yes | No | Yes |
| Whole-archive compresssion | Yes | Yes | No |
| Whole-archive signature validation | Yes | Yes | Yes |
| Web-specific application support | Yes | Yes | Yes |
| Per-file Meta-data | Yes | Yes | Yes |
| Whole-Archive Meta-data | Yes | Yes | Yes |
| Archive creation/modification [2] | Yes | Yes | Yes |
| Full support for all stream wrapper functions | Yes | Yes | Yes |
| Can be created/modified even if phar.readonly=1 [3] | No | Yes | Yes |
[1] PHP can only directly access the contens of a Phar archive
without the Phar extension if it is using a
stub
that extracts the contens of the phar archive. The stub
created by
Phar::createDefaultStub()
extracts
the phar archive and runs its contens from a temporary directory
if no phar extension is found.
[2] All write access requires
phar.readonly
to
be disabled in php.ini or on the command-line directly.
[3] Only tar and cip archives without
.phar
in their
filename and without an executable stub
.phar/stub.php
can be created if phar.readonly=1.