問題解決了!這是我做的: 更改創建zip文件的代碼到這個功能從php.net用戶評論:
function addFolderToZip($dir, $zipArchive){
if (is_dir($dir)) {
if ($dh = opendir($dir)) {
//Add the directory
$zipArchive->addEmptyDir($dir);
// Loop through all the files
while (($file = readdir($dh)) !== false) {
//If it's a folder, run the function again!
if(!is_file($dir . $file)){
// Skip parent and root directories
if(($file !== ".") && ($file !== "..")){
addFolderToZip($dir . $file . "/", $zipArchive);
}
}else{
// Add the files
$zipArchive->addFile($dir . $file);
}
}
}
}
}
$zip = new ZipArchive;
$zip->open("$modName.zip", ZipArchive::CREATE);
addFolderToZip("$modName/", $zip);
$zip->close();
,然後在主機我寫的只是這個代碼來解開壓縮文件:
copy($file["tmp_name"], "module/$file[name]");
$zip = new ZipArchive;
if ($zip->open("module/$file[name]") === TRUE) {
$zip->extractTo('module/');
}
$zip->close();
它創建了文件夾和子文件夾。剩下的唯一問題是它會提取主文件夾中所有子文件夾中的每個文件,因此子文件夾中每個文件都有兩個版本。
您是否證實存檔確實具有預期的目錄?你用什麼方法來解壓縮它?顯示你的代碼。 – marekful
是的,它在本地主機上運行良好,它內部有目錄,下面是我的代碼:$ zip = new ZipArchive; if($ zip-> open(「module/$ file [name]」)=== TRUE){$ zip-> extractTo('module /'); } – Alireza
@Alireza我根據你的代碼更新了我的答案。讓我知道。 – flangofas