\n" ); exit( 1 ); } if ( ! class_exists( 'ZipArchive' ) ) { fwrite( STDERR, "PHP's zip extension is not available on this host -- cannot build the release archive here.\n" ); exit( 1 ); } $zip = new ZipArchive(); if ( true !== $zip->open( $dest_zip, ZipArchive::CREATE | ZipArchive::OVERWRITE ) ) { fwrite( STDERR, "Could not create {$dest_zip}\n" ); exit( 1 ); } $source_dir = rtrim( $source_dir, '/' ); $iterator = new RecursiveIteratorIterator( new RecursiveDirectoryIterator( $source_dir, FilesystemIterator::SKIP_DOTS ), RecursiveIteratorIterator::SELF_FIRST ); foreach ( $iterator as $item ) { $relative = $root_name . '/' . ltrim( str_replace( $source_dir, '', $item->getPathname() ), '/' ); if ( $item->isDir() ) { $zip->addEmptyDir( $relative ); } else { $zip->addFile( $item->getPathname(), $relative ); } } $zip->close(); echo "Wrote {$dest_zip}\n";