Phar 扩展支持的三种文件格式的优缺点是什么?此表试图回答这个问题。
| 特性 | Phar | Tar | Zip |
|---|---|---|---|
| 标准文件格式 | 否 | 是 | 是 |
| 无需 Phar 扩展即可执行 [1] | 是 | 否 | 否 |
| 每个文件的压缩 | 是 | 否 | 是 |
| 整个归档文件的压缩 | 是 | 是 | 否 |
| 整个归档文件的签名验证 | 是 | 是 | 是 |
| Web 特定应用程序支持 | 是 | 是 | 是 |
| 每个文件的元数据 | 是 | 是 | 是 |
| 整个归档文件的元数据 | 是 | 是 | 是 |
| 归档创建/修改 [2] | 是 | 是 | 是 |
| 完全支持所有流封装器函数 | 是 | 是 | 是 |
| 即使 phar.readonly=1 也可以创建/修改 [3] | 否 | 是 | 是 |
[1] 如果 PHP 使用 stub 提取 Phar 归档文件的内容,则无需 Phar 扩展即可直接访问 Phar 归档文件的内容。由 Phar::createDefaultStub() 创建的存根会提取 Phar 归档文件并在找不到 Phar 扩展的情况下从临时目录运行其内容。
[2] 所有写访问都需要在 php.ini 或命令行中直接禁用 phar.readonly。
[3] 如果 phar.readonly=1,则只能创建文件名中没有 .phar 且没有可执行存根 .phar/stub.php 的 Tar 和 Zip 归档文件。