我在这里拉我的头发。我花了上个星期试图弄清楚为什么ZipArchive extractTo方法在Linux上的行为与在我们的测试服务器(WAMP)上的行为不同。Linux PHP ExtractTo返回整个路径而不是文件结构
下面是该问题的最基本的例子。我只是需要提取具有以下结构的拉链:
my-zip-file.zip
-username01
--filename01.txt
-images.zip
--image01.png
-songs.zip
--song01.wav
-username02
--filename01.txt
-images.zip
--image01.png
-songs.zip
--song01.wav
下面的代码将提取根zip文件,并保持结构我WAMP的服务器上。我不需要担心提取子文件夹。
<?php
if(isset($_FILES["zip_file"]["name"])) {
$filename = $_FILES["zip_file"]["name"];
$source = $_FILES["zip_file"]["tmp_name"];
$errors = array();
$name = explode(".", $filename);
$continue = strtolower($name[1]) == 'zip' ? true : false;
if(!$continue) {
$errors[] = "The file you are trying to upload is not a .zip file. Please try again.";
}
$zip = new ZipArchive();
if($zip->open($source) === FALSE)
{
$errors[]= "Failed to open zip file.";
}
if(empty($errors))
{
$zip->extractTo("./uploads");
$zip->close();
$errors[] = "Zip file successfully extracted! <br />";
}
}
?>
从上面的WAMP脚本输出正确提取它(保持文件结构)。
当我我们生活的服务器上运行这个输出是这样的:
--username01\filename01.txt
--username01\images.zip
--username01\songs.zip
--username02\filename01.txt
--username02\images.zip
--username02\songs.zip
我想不通为什么它的行为不同的活的服务器上。任何帮助将不胜感激!
嘿@Zachary。我不清楚究竟是什么问题。你想在两个系统中递归提取zip吗? –
感谢您的回复!问题是,当我解压zip文件时,linux破坏了文件结构.....我相信它与反斜杠有关,但我无法弄清楚如何使用正斜杠来保留目录结构 – Zachary
我认为我遇到了这个问题:斜杠成为Linux上文件名的一部分。是吗? –