注册 登录
编程论坛 PHP技术论坛

php在线解压rar问题

janurs 发布于 2010-01-29 12:15, 3792 次点击
用以下代码解压是成功了:
<?
$upfile=$_FILES['file'];
if($upfile){
    $pic=$_SERVER[DOCUMENT_ROOT].'/upload/'.$upfile[name];
    move_uploaded_file($upfile['tmp_name'],$pic);
   
    $rar_file = rar_open($pic) or die("Can't open Rar archive");
    //example.rar换成其它档案即可
    $entries = rar_list($rar_file);
   
    foreach ($entries as $entry){
    $entry->extract($_SERVER[DOCUMENT_ROOT].'/upload/');
    }
   
    $r=rar_close($pic);
}
?>
但成功之后有问题,就是解压的那个rar要过一段时间才能删除,时那个php_rar.dll的问题,还是rar_close用的不对,还是什么问题呢?
附上pecl各个版本的下载地址:http://museum.
我用的是 pecl-5.2.3-Win32.zip 里的php_rar.dll,其他版本就算apache可以读到,但也用不到以上的代码。
或者各位有什么好用的解压rar的方法也可以说下。
对于各位的回答,虽然小弟没有分可以给大家,但万分感谢。。。谢谢```

[ 本帖最后由 janurs 于 2010-1-29 12:20 编辑 ]
23 回复
#2
外部三电铃2010-01-29 13:46
解压的过程是需要耗费时间滴,得解压结束了才能删除那个.rar文件吧,如果一个10G的文件得花上半个小时吧
#3
janurs2010-01-29 13:48
我测试时是用一个几十kb的文件的,压缩文件中的文件全都解压出来了,但是还是不能删除
#4
外部三电铃2010-01-29 14:07
pecl-5.2.3-Win32.zip里没有php_rar.dll啊,只有php_zip.dll
我测试的时候出现下面的错误
Fatal error: Call to undefined function rar_open()

没有rar_open()这个函数

[ 本帖最后由 外部三电铃 于 2010-1-29 14:09 编辑 ]
#5
janurs2010-01-29 14:15
不会吧···我的没有php_zip.dll,只有php_rar.dll
我把我用的那个发上来吧··
只有本站会员才能查看附件,请 登录
#6
外部三电铃2010-01-29 14:16
用php的exec函数执行winrar的相关命令也可以,操作命令比较丰富,有几十条,给压缩文件加注释,加密码,解压带密码的压缩文件等都可以操作

不过php执行exec函数,首先要给php读cmd.exe的权限(就是要给cmd.exe 安全里面添加上 internet来宾用户权限),安全性有所降低
#7
janurs2010-01-29 14:18
恩··但exec可以运行format命令···很危险吧··
#8
外部三电铃2010-01-29 14:21
先把php_rar.dll收了,稍后哥再陪你玩,很纳闷,我也是在http://museum. 下载的pecl-5.2.3-Win32.zip,不知道为什么就没有php_rar.dll
#9
外部三电铃2010-01-29 14:49
程序代码:
$upfile=$_FILES['file'];
if($upfile){
    $pic=$_SERVER[DOCUMENT_ROOT].'/upload/'.$upfile[name];
    move_uploaded_file($upfile['tmp_name'],$pic);
     
    $rar_file = rar_open($pic) or die("Can't open Rar archive");
    //example.rar  
    $entries = rar_list($rar_file);  
     
    foreach ($entries as $entry){  
    $entry->extract($_SERVER[DOCUMENT_ROOT].'/upload/');
    }
     
    $r=rar_close($rar_file);  
}

把$pic改成$rar_file应该可以了
#10
janurs2010-01-29 15:00
你可以?~~~~试过不可以··
#11
janurs2010-01-29 15:04
我发出来的代码是笔误···原来就是你写的那样··
用$pic是会出错
用$rar_file没有问题,但就是该文件会被apache占用
#12
外部三电铃2010-01-29 15:07
我用unlink删除rar文件提示没权限,当然这个rar文件不是上传的,是我自己在文件夹里手动压缩放在那的,用unlink删除php文件就可以,纠结了
#13
外部三电铃2010-01-29 15:09
另外,unlink删除文件的时候不能用绝对路径,只能用相对路径,直接unlink($pic)是不行的
#14
janurs2010-01-29 15:10
啊··不是吧···你用的是用什么搭建php的··??
#15
janurs2010-01-29 15:12
我用函数还是进去删除文件。。。都没有用啊··
#16
外部三电铃2010-01-29 15:21
windows2003 + iis6 + php

直接在服务器上手动删除都删除不了吗?
#17
janurs2010-01-29 15:23
恩··对··用工具查看··是被httpd.exe占用了,应该就是APACHE··
你真的可以删除???
#18
janurs2010-01-29 15:24
哦··你用iis··应该是apache问题了··
#19
外部三电铃2010-01-29 15:26
我试了一下,还真删除不了
#20
janurs2010-01-29 15:27
。。。。。。。
#21
janurs2010-01-29 15:48
版主··有什么好的解压rar的办法么??
#22
外部三电铃2010-01-29 15:59
不晓得啊,php的exec函数应该可以,也可以用计划任务的方式定期删除那些rar文件啊,
#23
janurs2010-01-29 21:42
恩··虽然没有解决··但还是感谢版主
#24
feilis2010-05-13 16:01
不大明白啊
1