好问题
Good  Question
  • 首 页
  • 问题
    • PHP
    • JAVA
    • CPlusPlus
    • C#
    • SQL
  • 关 于
  • 联 系
在PHP中如何解压缩一个文件? 关闭 返回上一级  

在PHP中如何解压缩一个文件?
+ 查看更多

发布日期:2018-03-26 14:32
分类:PHP
浏览次数:183

我想解压一个文件,这样做能够正常执行:

system('unzip File.zip');


但是我想要通过URL传递文件名而不让它执行,这是我使用的:
$master = $_GET["master"];
system('unzip $master.zip');
我缺少什么吗?我知道它一定是我忽略的小而无趣的细节问题。

回答

我只能假定你的代码来自于一个网上的教程,在这种情况下,它是否是一个好的教程只能你自己去辨别。另一方面,这个代码事实上很有可能是被作为正确的解压缩文件的方式发表在网上,这是很可怕的。
PHP有内置的扩展来处理压缩文件,没有必要去调用system,ZipArchivedocs就是其中一种选择。
$zip = new ZipArchive;
$res = $zip->open('file.zip');
if ($res === TRUE) {
  $zip->extractTo('/myzips/extract_path/');
  $zip->close();
  echo 'woot!';
} else {
  echo 'doh!';
}
当然,正如有些人说的,自从4.1版本以来,$HTTP_GET_VARS已经被弃用很长时间了,不要使用它。用$_GET全局替代。
最后,要非常小心的接收通过$_GET变量传递给脚本的任何输入。
频繁清理用户输入。
更新
在你们的评论中,将zip文件解压缩至它所在的同一目录下的最佳方式是确定文件的硬件路径,然后专门把它提取到该位置。你可以这样做:
// assuming file.zip is in the same directory as the executing script.
$file = 'file.zip';

// get the absolute path to $file
$path = pathinfo(realpath($file), PATHINFO_DIRNAME);

$zip = new ZipArchive;
$res = $zip->open($file);
if ($res === TRUE) {
  // extract it to the path we determined above
  $zip->extractTo($path);
  $zip->close();
  echo "WOOT! $file extracted to $path";
} else {
  echo "Doh! I couldn't open $file";
}

上一篇在正则表达式中匹配一个空格
PHP如何将上一页的变量传递给下一个页面?下一篇
下一篇PHP如何将上一页的变量传递给下一个页面?

最新文章

  • 函数`__construct`用来干嘛的
    发布日期:2018-03-26
  • 通过访客的IP得到他们的地区
    发布日期:2018-03-26
  • 合并两个PHP对象的最好的方法是什么?
    发布日期:2018-03-26
  • 该如何把一该如何把一个对象转化成数组?
    发布日期:2018-03-26
  • 什么是输出缓冲区?
    发布日期:2018-03-26
  • 在PHP中怎么把用逗号分隔的字符串分隔在一个数组里?
    发布日期:2018-03-26
  • 在PHP中使用foreach循环时查找数组的最后一个元素
    发布日期:2018-03-26
关于好问
收集整理一些有用的问题和回答,造福中国的程序旺和IT喵们!
友情链接
起飞页 
相关信息
版权声明
Copyright © 2016 - 2022  苏州卡达网络科技有限公司 备案号:苏ICP备09008221号