项目涉及文档处理,用户上传的包括 zip 和 rar 压缩包,需要先将压缩包解压后再作处理。对于 zip 压缩包,由于 php 自带 zip 扩展,可以直接解压。
解压 zip 压缩包:
$file = "/opt/data/upload/testfile.zip";
$outPath = "/opt/data/upload/testfile";
$zip = new ZipArchive();
$openRes = $zip->open($file);
if ($openRes === TRUE) {$zip->extractTo($outPath);
$zip->close();}
对于 rar 压缩包,需要先为 php 安装 rar 扩展。
安装 rar 扩展:
wget http://pecl.php.net/get/rar-4.0.0.tgz
gunzip rar-4.0.0.tgz
tar -xvf rar-4.0.0.tar
cd rar-4.0.0
phpize
./configure && make && make install
# 报错
configure: error: Cannot find php-config. Please use --with-php-config=PATH
# 运行./configure 时指定 php-config 路径即可
./configure --with-php-config=/usr/local/php/bin/php-config
make && make install
配置 rar 扩展:
# 新建 /usr/local/php/conf.d/rar.ini,内容
extension=rar.so
重启 php-fpm,看一下 phpinfo();
可以看到已经成功安装了 rar,可以来测试一下解压 rar 文件。
解压 RAR 压缩包
$file = "/opt/data/upload/testfile.zip";
$outPath = "/opt/data/upload/testfile";
$rar_file = rar_open($file);
if ($rar_file) {$entries = rar_list($rar_file);
foreach ($entries as $entry) {$entry->extract($outPath);
}
rar_close($rar_file);
}
这样就搞定用户上传的压缩包解压的问题了。
正文完