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(4) php 函数 补充2
Feb 15 PHP
用sql命令修改数据表中的一个字段为非空(not null)的语句
Jun 04 PHP
理解php原理的opcodes(操作码)
Oct 26 PHP
单一index.php实现PHP任意层级文件夹遍历(Zjmainstay原创)
Jul 31 PHP
PHPMailer使用教程(PHPMailer发送邮件实例分析)
Dec 06 PHP
输入值/表单提交参数过滤有效防止sql注入的方法
Dec 25 PHP
PHP实现的博客欢迎提示功能(很特别哦)
Jun 05 PHP
smarty内置函数{loteral}、{ldelim}和{rdelim}用法实例
Jan 22 PHP
php实现读取内存顺序号
Mar 29 PHP
PHP面向对象程序设计组合模式与装饰模式详解
Dec 02 PHP
PHP+AJAX 投票器功能
Nov 11 PHP
php解决crontab定时任务不能写入文件问题的方法分析
Sep 16 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
php读取文件内容的三种可行方法示例介绍
2014/02/08 PHP
Ajax+PHP实现的删除数据功能示例
2019/02/12 PHP
JavaScript中的new的使用方法与注意事项
2007/05/16 Javascript
JavaScript 异步调用框架 (Part 1 - 问题 &amp; 场景)
2009/08/03 Javascript
JS截取字符串常用方法详细整理
2013/10/28 Javascript
JavaScript中Function函数与Object对象的关系
2015/12/17 Javascript
JavaScript实现垂直滚动条效果
2017/01/18 Javascript
JavaScript实现图片无缝滚动效果
2017/07/07 Javascript
通过 JS 判断页面是否有滚动条的实现方法
2018/04/05 Javascript
vue+springboot实现项目的CORS跨域请求
2018/09/05 Javascript
解决vue路由name同名,路由重复的问题
2020/08/05 Javascript
如何封装Vue Element的table表格组件
2021/02/06 Vue.js
[40:57]TI4 循环赛第二日 iG vs EG
2014/07/11 DOTA
[02:51]2014DOTA2国际邀请赛 IG战队官方纪录片
2014/07/21 DOTA
关于Tensorflow中的tf.train.batch函数的使用
2018/04/24 Python
解决vscode python print 输出窗口中文乱码的问题
2018/12/03 Python
Pycharm debug调试时带参数过程解析
2020/02/03 Python
Python命名空间namespace及作用域原理解析
2020/06/05 Python
Python爬虫实例——爬取美团美食数据
2020/07/15 Python
html5 div布局与table布局详解
2016/11/16 HTML / CSS
HTML5 Web缓存和运用程序缓存(cookie,session)
2018/01/11 HTML / CSS
canvas实现漂亮的下雨效果的示例
2018/04/18 HTML / CSS
美国知名珠宝首饰品牌:Gemvara
2017/10/06 全球购物
法国在线宠物店:zooplus.fr
2018/02/23 全球购物
北京天润融通.net面试题笔试题
2012/02/20 面试题
几个Shell Script面试题
2014/04/18 面试题
店长助理岗位职责
2013/12/13 职场文书
满月酒答谢词
2014/01/14 职场文书
酒店仓管员岗位职责
2014/04/28 职场文书
优秀本科毕业生自荐信
2014/07/04 职场文书
2014企业领导班子四风对照检查材料思想汇报
2014/09/17 职场文书
2014年法务工作总结
2014/12/11 职场文书
孩子满月酒答谢词
2015/09/30 职场文书
党风廉政建设心得体会
2019/05/21 职场文书
Windows Server 2008配置防火墙策略详解
2022/06/28 Servers
win10搭建配置ftp服务器的方法
2022/08/05 Servers