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