PclZip替代ZipArchive,解决PHP报错问题!
时间:2023年10月04日
/来源:网络
/编辑:佚名
PclZip是一个基于PHP的ZIP归档库,可以轻松地创建、读取和提取ZIP文件。与ZipArchive类不同,PclZip不需要PHP的Zip扩展程序。
折腾一下午,结果还是选择抛弃掉ZipArchive,真是佛了!
原来的需求是:
《PHP远程下载zip并解压覆盖指定目录,如果指定目录不存在,那么便创建目录,如果目录存在则清空目录,解压的zip文件中,含有中文名的文件》
由于PclZip官方已经跑路了,可能跑路了吧,我去找的时候,反正已经没了,所以这里准备了一个找到的PclZip包,留着备用一下,其实也就是一个PHP文件!
将里面的函数替换为以下,即可:
function downloadAndExtractZip($remoteZipUrl, $localDir) {
// 如果本地目录不存在,创建目录
if (!file_exists($localDir)) {
mkdir($localDir, 0777, true);
}
// 如果本地目录存在,清空目录
if (file_exists($localDir) && is_dir($localDir)) {
$files = glob($localDir . '/*'); // 获取目录下的所有文件
foreach ($files as $file) {
if (is_file($file)) {
unlink($file); // 删除文件
}
}
}
// 下载zip文件到本地临时文件
$tempFile = tempnam(sys_get_temp_dir(), 'zip');
$fp = fopen($tempFile, 'w');
$ch = curl_init($remoteZipUrl);
curl_setopt($ch, CURLOPT_FILE, $fp);
curl_exec($ch);
curl_close($ch);
fclose($fp);
// 解压zip文件到本地目录
$zip = new PclZip($tempFile);
$extractedFiles = $zip->extract(PCLZIP_OPT_PATH, $localDir, PCLZIP_OPT_SET_CHMOD, 0777);
if ($extractedFiles != 0) {
unlink($tempFile); // 删除本地临时文件
return true;
} else {
unlink($tempFile); // 删除本地临时文件
return false;
}
}
pclzip-master.zip下
载地址:
链接: https://pan.baidu.com/s/1f-P48VzwwNNilKASgJZjtg 提取码: vu5d
https://pan.baidu.com/s/1lc-GQOtC37eMlcNNlc2aPg?pwd=rc4i 提取码:rc4i
折腾一下午,结果还是选择抛弃掉ZipArchive,真是佛了!
原来的需求是:
《PHP远程下载zip并解压覆盖指定目录,如果指定目录不存在,那么便创建目录,如果目录存在则清空目录,解压的zip文件中,含有中文名的文件》
由于PclZip官方已经跑路了,可能跑路了吧,我去找的时候,反正已经没了,所以这里准备了一个找到的PclZip包,留着备用一下,其实也就是一个PHP文件!
将里面的函数替换为以下,即可:
function downloadAndExtractZip($remoteZipUrl, $localDir) {
// 如果本地目录不存在,创建目录
if (!file_exists($localDir)) {
mkdir($localDir, 0777, true);
}
// 如果本地目录存在,清空目录
if (file_exists($localDir) && is_dir($localDir)) {
$files = glob($localDir . '/*'); // 获取目录下的所有文件
foreach ($files as $file) {
if (is_file($file)) {
unlink($file); // 删除文件
}
}
}
// 下载zip文件到本地临时文件
$tempFile = tempnam(sys_get_temp_dir(), 'zip');
$fp = fopen($tempFile, 'w');
$ch = curl_init($remoteZipUrl);
curl_setopt($ch, CURLOPT_FILE, $fp);
curl_exec($ch);
curl_close($ch);
fclose($fp);
// 解压zip文件到本地目录
$zip = new PclZip($tempFile);
$extractedFiles = $zip->extract(PCLZIP_OPT_PATH, $localDir, PCLZIP_OPT_SET_CHMOD, 0777);
if ($extractedFiles != 0) {
unlink($tempFile); // 删除本地临时文件
return true;
} else {
unlink($tempFile); // 删除本地临时文件
return false;
}
}
pclzip-master.zip下
载地址:
链接: https://pan.baidu.com/s/1f-P48VzwwNNilKASgJZjtg 提取码: vu5d
https://pan.baidu.com/s/1lc-GQOtC37eMlcNNlc2aPg?pwd=rc4i 提取码:rc4i
新闻资讯 更多
- 【建站知识】查询nginx日志状态码大于400的请求并打印整行04-03
- 【建站知识】Python中的logger和handler到底是个什么?04-03
- 【建站知识】python3拉勾网爬虫之(您操作太频繁,请稍后访问)04-03
- 【建站知识】xpath 获取meta里的keywords及description的方法04-03
- 【建站知识】python向上取整以50为界04-03
- 【建站知识】scrapy xpath遇见乱码解决04-03
- 【建站知识】scrapy爬取后中文乱码,解决word转为html 时cp1252编码问题04-03
- 【建站知识】scrapy采集—爬取中文乱码,gb2312转为utf-804-03