PHP调用Linux的命令行执行文件压缩命令


Posted in PHP onJanuary 27, 2013

前几天工作中,需要将3个txt文件,打包成*.zip down到本地……
一开始,我和普通青年一样,想到用PHP内置的 ZipArchive,代码看起来应该是这样的:

/*拆分成3个txt文件 分别是wow_1.txt wow_2.txt 和 wow_3.txt*/ 
$zip=new ZipArchive(); 
$zipfile='./Exl_file/wow.zip'; 
if($zip->open($zipfile,ZIPARCHIVE::CREATE)===TRUE){ 
$zip->addFile('./Exl_file/wow_1.txt','wow_1.txt'); 
$zip->addFile('./Exl_file/wow_2.txt','wow_2.txt'); 
$zip->addFile('./Exl_file/wow_3.txt','wow_3.txt'); 
$zip->close(); 
//下载输出文件后删除相关文件 
}else{ 
echo "ZIP生成失败!"; 
}

可是纠结的是正式环境上没安装zip扩展,ZipArchive直接没法用,代码绝对比在上面装个扩展要来的快——用PHP调用Linux的命令行 ,执行压缩命令,OK,马上行动!
/*拆分成3个txt文件 分别是wow_1.txt wow_2.txt 和 wow_3.txt全部放到 Exl_file 目录下*/ 
$outputs=array(); 
/*用php的exec执行Linux命令 括号里的字符串就是你在Linux命令窗口里敲的命令; 
第二个参数是linux执行该命令后返回的结果数组; 
linux执行返回的每一条结果依次存入该数组 
第三个参数是结果,如果执行成功,则Linux返回结果值为0,如果执行失败,则结果值不为0 
*/ 
exec("zip ./Exl_file/wow.zip ./Exl_file/wow_1.txt ./Exl_file/wow_2.txt ./Exl_file/wow_3.txt",$outputs,$rc); 
if($rc!=0){ 
foreach ($outputs as $ko=>$vo){ 
echo "$vo<br/>"; 
} 
}else{ 
$zipfile='./Exl_file/wow.zip'; 
//文件下载输出后删除相关文件 
} 
}

你可以把if($rc!=0)改成if(1==1)查看Linux执行命令返回的结果行,如下图:
adding: Exl_file/wow_1.txt (deflated 96%) 
adding: Exl_file/wow_2.txt (deflated 97%) 
adding: Exl_file/wow_3.txt (deflated 97%)

可以看到执行返回的信息全部输入到了 $outputs 数组中,*.zip文件生成成功。
PHP 相关文章推荐
落伍首发 php+mysql 采用ajax技术的 省 市 地 3级联动无刷新菜单 源码
Dec 16 PHP
隐藏你的.php文件的实现方法
Mar 19 PHP
php 一元分词算法
Nov 30 PHP
file_get_contents获取不到网页内容的解决方法
Mar 07 PHP
深入php self与$this的详解
Jun 08 PHP
PHP原生函数一定好吗?
Dec 08 PHP
php中socket通信机制实例详解
Jan 03 PHP
php实现字符串首字母转换成大写的方法
Mar 17 PHP
PHP利用递归函数实现无限级分类的方法
Mar 22 PHP
PHP开启目录引索+fancyindex漂亮目录浏览带搜索功能
Sep 23 PHP
Laravel-admin之修改操作日志的方法
Sep 30 PHP
thinkphp5.1框架实现格式化mysql时间戳为日期的方式小结
Oct 10 PHP
php压缩HTML函数轻松实现压缩html/js/Css及注意事项
Jan 27 #PHP
用php来改写404错误页让你的页面更友好
Jan 24 #PHP
php对大文件进行读取操作的实现代码
Jan 23 #PHP
php删除与复制文件夹及其文件夹下所有文件的实现代码
Jan 23 #PHP
php删除文件夹及其文件夹下所有文件的函数代码
Jan 23 #PHP
php定时删除文件夹下文件(清理缓存文件)
Jan 23 #PHP
PHP关联数组的10个操作技巧
Jan 21 #PHP
You might like
安健A254立体声随身听的分析与打磨
2021/03/02 无线电
php数组总结篇(一)
2008/09/30 PHP
很好用的PHP数据库类
2009/05/27 PHP
比较好用的PHP防注入漏洞过滤函数代码
2012/04/11 PHP
PHP小教程之实现链表
2014/06/09 PHP
php+html5+ajax实现上传图片的方法
2016/05/14 PHP
PHP生成制作验证码的简单实例
2016/06/12 PHP
PHP PDOStatement::fetchObject讲解
2019/02/01 PHP
Yii 框架使用Forms操作详解
2020/05/18 PHP
符合标准的js表单提交的代码
2007/09/13 Javascript
JAVASCRIPT车架号识别/验证函数代码 汽车车架号验证程序
2012/01/08 Javascript
js自定义事件及事件交互原理概述(一)
2013/02/01 Javascript
jQuery滚动加载图片效果的实现
2013/03/06 Javascript
js中回调函数的学习笔记
2014/07/31 Javascript
JavaScript变量声明详解
2014/11/27 Javascript
javascript正则表达式基础知识入门
2015/04/20 Javascript
jQuery实现可以控制图片旋转角度效果(附demo源码下载)
2016/01/27 Javascript
浅谈JavaScript for循环 闭包
2016/06/22 Javascript
超实用的javascript时间处理总结
2016/08/16 Javascript
利用nodejs监控文件变化并使用sftp上传到服务器
2017/02/18 NodeJs
详谈javascript精度问题与调整
2017/07/08 Javascript
解决vue v-for 遍历循环时key值报错的问题
2018/09/06 Javascript
webpack3里使用uglifyjs压缩js时打包报错的解决
2018/12/13 Javascript
实例讲解JS中pop使用方法
2019/01/27 Javascript
js实现九宫格抽奖
2020/03/19 Javascript
[00:42]《辉夜杯》—职业组预选赛12月3日15点 正式打响
2015/12/03 DOTA
[45:16]完美世界DOTA2联赛循环赛 IO vs FTD BO2第二场 11.05
2020/11/06 DOTA
python多线程threading.Lock锁用法实例
2014/11/01 Python
Python函数式编程指南(二):从函数开始
2015/06/24 Python
Keras 加载已经训练好的模型进行预测操作
2020/06/17 Python
Python自动巡检H3C交换机实现过程解析
2020/08/14 Python
户籍证明格式
2014/09/15 职场文书
讲座通知范文
2015/04/23 职场文书
死亡诗社观后感
2015/06/05 职场文书
2019年度开业庆典祝福语大全!
2019/07/05 职场文书
Python+Appium自动化测试的实战
2021/06/30 Python