发布日期:2018-03-26
在PHP中如何解压缩一个文件?+ 查看更多
在PHP中如何解压缩一个文件?
+ 查看更多
发布日期:2018-03-26 14:32
分类:PHP
浏览次数:195
我想解压一个文件,这样做能够正常执行:
system('unzip File.zip');但是我想要通过URL传递文件名而不让它执行,这是我使用的:
$master = $_GET["master"]; system('unzip $master.zip');我缺少什么吗?我知道它一定是我忽略的小而无趣的细节问题。
回答
我只能假定你的代码来自于一个网上的教程,在这种情况下,它是否是一个好的教程只能你自己去辨别。另一方面,这个代码事实上很有可能是被作为正确的解压缩文件的方式发表在网上,这是很可怕的。
PHP有内置的扩展来处理压缩文件,没有必要去调用system,ZipArchivedocs就是其中一种选择。
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"; }