linux php ya ziparchive,linux下zipArchive终于工作了

以前一直用的是.net,由于考虑到开源问题,所以最近开始学php了。

由于以后准备长期在linux下使用计算机,所以特地将环境搭成了fedora20+apache+php+mysql.

由于也不是大咖,所以全部环境采用了yum安装。一路顺利。

目前学习到php多文件下载这一章节,前面的路还算一帆风顺,但到了这一章节,太不顺利了。首先是考虑到ZipArchive是需要扩展的,但因为自己是yum安装,所以不知道到底是不是安装了这个扩展。倒腾了好久才发现,其实yum安装已经替我安装了这个扩展,但最后还是证明,其实yum安装已经替我安装了这个扩展,并且这个扩展在phpinfo中对应zip模块。

闲话不多说,讲讲我今天遇到的问题, 代码如下:while(true){

$archiveName = md5(uniqid().time()).".zip";

if(!file_exists("./".$archiveName))

break;

}

$zip = new ZipArchive();

//根据文件名,打开一个zip压缩包,如果包不存在,则创建一个 ZipArchive::OVERWRITE

//这里打开的模式在linux下不可使用ZipArchive::OVERWRITE来自动创建ZIP包

if(!$zip->open($archiveName,ZipArchive::CREATE)){

die("打开压缩包失败");

}

foreach($files as $v){

$zip->addFile($v);

}

//将文件放进zipArchive后要关闭zip 包,不然会下载到一个空包

$zip->close();

反复测试,但就是无法生成正确的zip包,报错信息:ZipArchive::AddFile(): invalid or uninitialed object in .......

起初以为是zip模块的问题,但后来发现,$zip对象是实例化成功的。那就不应该是模块问题。

后来又发现,每次$zip->open()后,我的服务器端都没有产生对应的zip包。现在已经是凌晨,头晕晕

一觉醒来后,神清气爽。于是乎动手改DEMO。最后发现,是因为在linux环境下,不可使用ZipArchive::OVERWRITE来自动创建ZIP包,小小问题,耽误好久。希望这个问题能够帮到遇到同样问题的朋友。

最后我要感谢一下在学习过程中一直给予帮助的张双老师。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值