我在這裏拉我的頭髮。我花了上個星期試圖弄清楚爲什麼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上文件名的一部分。是嗎? –