codebites / cli-7zip
7-zip CLI 的包装器,用于压缩、解压和操作存档。
v0.1.3
2024-07-09 09:12 UTC
Requires
- php: >=8.2
- symfony/process: ^7.1
Requires (Dev)
- phpunit/phpunit: ^11.2
README
描述
这是对 7-zip CLI 二进制文件的简单包装。我尝试抽象出最常用的命令,如 verify、extract、create 和 add。它将尝试自动在您的系统上找到 7zz
二进制文件。我选择使用 7zz
,因为它静态链接且独立,因此非常适合无需任何依赖项的打包。您也可以通过将其传递给构造函数来使用其他兼容的二进制文件,如 7zr
或 7za
。如果它无法在您的系统上找到 7zz
,它将默认使用 ./bin
文件夹中捆绑的二进制文件。目前我只捆绑了 Linux x86_64
。您还可以通过 Cli7zip
类的构造函数将库应查找二进制文件的附加路径。
因为我们使用的是完整版本,所以我们支持所有存档格式,而不仅仅是 .7z
。根据 7-zip 网站的说明,它应该支持以下格式
- 打包/解包:7z、XZ、BZIP2、GZIP、TAR、ZIP 和 WIM
- 仅解包:APFS、AR、ARJ、CAB、CHM、CPIO、CramFS、DMG、EXT、FAT、GPT、HFS、IHEX、ISO、LZH、LZMA、MBR、MSI、NSIS、NTFS、QCOW2、RAR、RPM、SquashFS、UDF、UEFI、VDI、VHD、VHDX、VMDK、XAR 和 Z
先决条件
- PHP >= 8.2
安装
composer require codebites/cli-7zip
使用方法
<?php use Codebites\Cli7zip\Cli7zip; // Init $cli7zip = new Cli7zip(); // Init with custom paths $cli7zip = new Cli7zip('7zz', ['/path/to/my/binaries_folder']); // Extract archive without folder creation $success = $cli7zip->extractArchive('/my/archive.7z', '/my/existing/target/folder'); // Extract archive with folder creation $success = $cli7zip->extractArchive('/my/archive.7z', '/my/non-existing/target/folder', true); // Compress directory as 7z $success = $cli7zip->compressDir('/my/folder/to/compress', '/my/archive.7z', '7z'); // Compress directory as Zip $archivePath = $cli7zip->compressDir('/my/folder/to/compress', '/my/archive.zip', 'zip'); // Add files to existing archive $success = $cli7zip->addFilesToArchive('/my/archive.7z', '/my/first/file.txt', '/my/seconde/file2.txt'); // Add string as file to existing archive $success = $cli7zip->addStringToArchive('/my/archive.7z', 'Hello, World!', 'filename.txt');
警告
不要在生产环境中使用! 这是非常实验性的,并且没有经过实战测试。我花了一个小时左右写了这个用于我遇到的某个用例。如果有任何兴趣,我将尝试继续改进这个库。
许可信息
本项目包括从 7-zip 网站下载的二进制文件,下载自 Github。没有进行任何修改。7-zip 二进制文件在 GNU Lesser General Public License (LGPL) 下分发。许可协议包含在本存储库中。
- 7-zip 二进制文件位于
bin
目录。 - LGPL 许可证可以在
licenses/LGPL-3.0.txt
中找到。