Downloading updates failed:
  • Cannot extract temporary://update-cache-48bc0127/basis.zip, not a valid archive. (this is one example)

basis.zip is downloaded/created in tmp directory (everything works fine, right up to the point it attempts to extract the archive)

zip/unzip works on command line. I can extract a zip file from Virtualmin GUI. A simple php script using extractTo() succeeds in decompressing a file.

I've verified the downloaded basis.zip file is a valid archive by extracting it in 7zip.

phpinfo(): ZIP enabled, version 1.15.6 (php7.4-zip)

 

Accepted answer

One more thought: someone reported a similar issue with zip extension back in 2018. They run update.php and that solved it

 

https://forum.backdropcms.org/forum-topic/php-zip-extension-issue-192

To run update.php visit yoursite.com/update.php 

Comments

Are you able to download/install modules or other themes? 

I get the following error when attempting to install:

Sorry, it seems that the PHP .zip extension is not loaded on your server.

Here is the result of get_loaded_extensions()

Array
(
    [0] => Core
    [1] => date
    [2] => libxml
    [3] => openssl
    [4] => pcre
    [5] => zlib
    [6] => filter
    [7] => hash
    [8] => pcntl
    [9] => Reflection
    [10] => SPL
    [11] => session
    [12] => standard
    [13] => sodium
    [14] => cgi-fcgi
    [15] => mysqlnd
    [16] => PDO
    [17] => xml
    [18] => calendar
    [19] => ctype
    [20] => dom
    [21] => mbstring
    [22] => FFI
    [23] => fileinfo
    [24] => ftp
    [25] => gd
    [26] => gettext
    [27] => iconv
    [28] => json
    [29] => exif
    [30] => mysqli
    [31] => pdo_mysql
    [32] => Phar
    [33] => posix
    [34] => readline
    [35] => shmop
    [36] => SimpleXML
    [37] => sockets
    [38] => sysvmsg
    [39] => sysvsem
    [40] => sysvshm
    [41] => tokenizer
    [42] => xmlreader
    [43] => xmlwriter
    [44] => xsl
    [45] => zip
    [46] => Zend OPcache
)

Update.php fixed the issue. Interestingly some of the other posts indicate clearing cache would resolve the issue. For me that wasn't the case.