Phar 形式と Tar 形式、Zip 形式の徹底比較

phar 拡張モジュールがサポートする 3 つのファイル形式って、何がどう違うのでしょう? その答えを次の表にまとめました。

機能マトリックス: Phar vs. Tar vs. Zip
機能 Phar Tar Zip
一般的なファイル形式 No Yes Yes
Phar 拡張モジュールなしでの実行 [1] Yes No No
ファイル単位での圧縮 Yes No Yes
アーカイブ全体の圧縮 Yes Yes No
アーカイブ全体のシグネチャによる検証 Yes Yes Yes (PHP 5.3.1+)
ウェブアプリケーションへの対応 Yes Yes Yes
ファイルごとのメタデータ Yes Yes Yes
アーカイブ単位のメタデータ Yes Yes Yes
アーカイブの作成/変更 [2] Yes Yes Yes
すべてのストリームラッパー関数への対応 Yes Yes Yes
phar.readonly=1 の場合でも作成/変更が可能 [3] No Yes Yes

ヒント

[1] Phar 拡張モジュールが使用できない環境で Phar アーカイブの中身に PHP からアクセスする場合は、その スタブ を使用します。ここに phar アーカイブの中身を展開するコードが含まれています。 phar 拡張モジュールが見つからない場合は、 Phar::createDefaultStub() で作成したスタブが phar アーカイブを展開し、テンポラリディレクトリ内でそれを実行します。

ヒント

[2] 書き込みアクセスを行うには、php.ini あるいはコマンドラインで phar.readonly を無効にする必要があります。

ヒント

[3] tar および zip 形式のアーカイブでファイル名に .phar がつかない、かつ実行スタブ .phar/stub.php を含まないファイルは phar.readonly=1 でも作成できます。