phar 擴充功能支援的三種檔案格式各有什麼優缺點?此表格嘗試回答這個問題。
| 功能 | Phar | Tar | Zip |
|---|---|---|---|
| 標準檔案格式 | 否 | 是 | 是 |
| 無需 Phar 擴充功能即可執行 [1] | 是 | 否 | 否 |
| 單檔壓縮 | 是 | 否 | 是 |
| 全檔案壓縮 | 是 | 是 | 否 |
| 全檔案簽章驗證 | 是 | 是 | 是 |
| 網路應用程式支援 | 是 | 是 | 是 |
| 單檔詮釋資料 | 是 | 是 | 是 |
| 全檔案詮釋資料 | 是 | 是 | 是 |
| 檔案建立/修改 [2] | 是 | 是 | 是 |
| 完全支援所有串流包裝器函式 | 是 | 是 | 是 |
| 即使 phar.readonly=1 也可以建立/修改 [3] | 否 | 是 | 是 |
[1] 如果 PHP 使用的是提取 Phar 封存內容的 stub,則即使沒有 Phar 擴充功能,它也能直接存取 Phar 封存的內容。如果找不到 Phar 擴充功能,由 Phar::createDefaultStub() 建立的 stub 會提取 Phar 封存,並從暫存目錄執行其內容。
[2] 所有寫入操作都需要在 php.ini 中或直接在命令列上停用 phar.readonly。
[3] 如果 phar.readonly=1,則只能建立檔名中沒有 .phar 且沒有可執行 stub .phar/stub.php 的 tar 和 zip 封存。