Head-to-head comparison of Phar, Tar and Zip
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.