問題は解決しました!これが私がしたことです:私はphp.netユーザーコメントからこの関数にzipファイルを作成するコードを変更しました:
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();
そして、ホストで、zipファイルを抽出するためにこのコードだけを書きました:
copy($file["tmp_name"], "module/$file[name]");
$zip = new ZipArchive;
if ($zip->open("module/$file[name]") === TRUE) {
$zip->extractTo('module/');
}
$zip->close();
フォルダーとサブフォルダーが作成されました。残っている唯一のバグは、メイン フォルダー内のすべてのサブフォルダー内のすべてのファイルも抽出するため、サブフォルダー内の各ファイルの 2 つのバージョンが存在することです。