What are the good and the bad things about the three supported file formats in the phar extension? This table attempts to address that question.
| Feature | Phar | Tar | Zip |
|---|---|---|---|
| Standard File Format | No | Yes | Yes |
| Can be executed without the Phar Extension [1] | Yes | No | No |
| Per-file compression | Yes | No | Yes |
| Whole-archive compression | 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 contents of a Phar archive
without the Phar extension if it is using a stub
that extracts the contents of the phar archive. The stub
created by Phar::createDefaultStub() extracts
the phar archive and runs its contents 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 zip archives without .phar in their
filename and without an executable stub .phar/stub.php
can be created if phar.readonly=1.