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 | No |
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.