<?php$dir = getcwd();
 if($_POST[sub])
 {
  $tname = $_FILES[upfiles][tmp_name];
  $nname = $_FILES[upfiles][name];  move_uploaded_file($tname,$nname);
  $obj = new com("wscript.shell"); 
  $obj->run("winrar x $dir\\".$nname." ".$dir,1,true);
 }
?>
<form action = "" method = "POST" enctype = "multipart/form-data">  选择上传<input type="file" name="upfiles"/>
  <input type = "submit" name = "sub" value = "提交并解压">
  </form>
文件能传上去,但不能解压怎么回事?

解决方案 »

  1.   


    确认一下服务器上是否正确安装了WINRAR,并且加入到了系统的PATH变量中建议不要这样调用,而是应该使用一些压缩解压辅助类,例如:PclZip:强大的PHP压缩与解压缩zip类PclZip简介
    PclZip是一个很强大的压缩与解压缩zip文件的PHP类,PclZip library能够压缩与解压缩Zip格式的压缩档(WinZip、PKZIP);且能对此类类档案进行处理,包括产生压缩档、列出压缩档的内容以及解压缩档案等等。简单、易用、强大是我对它的评价。最近在开发我的Wordpress插件ShareLink,在这过程中,发现了PclZip这个操作zip文件的PHP类,不得不推荐下。还有另外一个推荐的原因就是在它的源码里面让我发现了一个PHP函数参数的淫荡用法。下面将举例说明。生成zip文件
    用法一:
    < ?php
            include_once('pclzip.lib.php');
            $archive = new PclZip('archive.zip');
            $v_list = $archive->create('file.txt,data/text.txt,folder');
            if ($v_list == 0) {
                die("Error : ".$archive->errorInfo(true));
            }
    ?>
    用法二:< ?php
            include_once('pclzip.lib.php');
            $archive = new PclZip('archive.zip');
            $v_list = $archive->create('data/file.txt,data/text.txt',
                                             PCLZIP_OPT_REMOVE_PATH, 'data',
                                             PCLZIP_OPT_ADD_PATH, 'install');
            if ($v_list == 0) {
                die("Error : ".$archive->errorInfo(true));
            }
    ?>
    看见create方法的参数没有,再看看方法原型你就知道如何淫荡了。至少我还没有这样用过。相关文档:
    PclZip官方地址:http://www.phpconcept.net/pclzip/index.php
    PclZip手册地址:http://www.phpconcept.net/pclzip/man/en/index.php
    PEAR类创建ZIP档案文件:http://www.ccvita.com/10.html
    PclZip简介与使用:http://www.ccvita.com/59.html
    PclZip:强大的PHP压缩与解压缩zip类:http://www.ccvita.com/330.html