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字符串截取问题
Nov 28 PHP
PHP explode()函数用法、切分字符串
Oct 03 PHP
PHP速成大法
Jan 30 PHP
CentOS安装php v8js教程
Feb 26 PHP
php获取指定范围内最接近数的方法
Jun 02 PHP
分享php分页的功能模块
Jun 16 PHP
thinkphp多层MVC用法分析
Dec 30 PHP
PHP magento后台无法登录问题解决方法
Nov 24 PHP
如何打开php的gd2库
Feb 09 PHP
yii2利用自带UploadedFile实现上传图片的示例
Feb 16 PHP
PHP针对伪静态的注入总结【附asp与Python相关代码】
Aug 01 PHP
Laravel 数据库加密及数据库表前缀配置方法
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
php递归实现无限分类生成下拉列表的函数
2010/08/08 PHP
详解PHP使用Redis存储session时的一个Warning定位
2017/07/05 PHP
PHP框架实现WebSocket在线聊天通讯系统
2019/11/21 PHP
用正则xmlHttp实现的偷(转)
2007/01/22 Javascript
经常用的图片在容器中的水平垂直居中实例
2007/06/10 Javascript
分享20款好玩的jQuery游戏
2011/04/17 Javascript
解决ExtJS在chrome或火狐中正常显示在ie中不显示的浏览器兼容问题
2013/01/11 Javascript
jQuery实现table隔行换色和鼠标经过变色的两种方法
2014/06/15 Javascript
jQuery中detach()方法用法实例
2014/12/25 Javascript
IE中鼠标经过option触发mouseout的解决方法
2015/01/29 Javascript
实现无刷新联动例子汇总
2015/05/20 Javascript
JavaScript+CSS实现仿Mootools竖排弹性动画菜单效果
2015/10/14 Javascript
Bootstrap Fileinput文件上传组件用法详解
2016/05/10 Javascript
JavaScript之DOM_动力节点Java学院整理
2017/07/03 Javascript
浅谈JS 数字和字符串之间相互转化的纠纷
2017/10/20 Javascript
vue项目tween方法实现返回顶部的示例代码
2018/03/02 Javascript
Python中用于返回绝对值的abs()方法
2015/05/14 Python
Python编程中的文件操作攻略
2015/10/16 Python
Python在Console下显示文本进度条的方法
2016/02/14 Python
python基础_文件操作实现全文或单行替换的方法
2017/09/04 Python
python文件名和文件路径操作实例
2017/09/29 Python
Python实现的json文件读取及中文乱码显示问题解决方法
2018/08/06 Python
python PrettyTable模块的安装与简单应用
2019/01/11 Python
python通过http下载文件的方法详解
2019/07/26 Python
使用Python和OpenCV检测图像中的物体并将物体裁剪下来
2019/10/30 Python
Python cookie的保存与读取、SSL讲解
2020/02/17 Python
CSS3的Flexbox布局的简明入门指南
2016/04/08 HTML / CSS
详解CSS3媒体查询响应式布局bootstrap 框架原理实战(推荐)
2020/11/16 HTML / CSS
HTML5 声明兼容IE的写法
2011/05/16 HTML / CSS
雪花秀美国官方网站:韩国著名草本护肤化妆品品牌
2016/10/19 全球购物
中职生自荐信范文
2014/06/15 职场文书
商场收银员岗位职责
2015/04/07 职场文书
互联网创业商业模式以及赚钱法则有哪些?
2019/10/12 职场文书
SpringCloud Alibaba 基本开发框架搭建过程
2021/06/13 Java/Android
数据库之SQL技巧整理案例
2021/07/07 SQL Server
vue 自定义组件添加原生事件
2022/04/21 Vue.js