composer update missing zip extension (ext-zip) on MacOS When doing a composer update in a Craft project on MacOS Catalina, I suddenly get the following error:

***** requires ext-zip * -&gt; the requested PHP extension zip is missing from your system.


Any ideas?
The reason seems to be that either the PHP version of the MacOS Catalina update or a version installed via brew do not come bundled with the ext-zip extension.

You can verify that by calling php -m in the Terminal. You will get a list of all modules and it will not contain the word zip

Even if it contains the word zip it does not necessarily mean that composer has it available. This is caused by the way ZSH (shell on MacOS) handles the PATH variable.

In my case I used an alias pointing to the MAMP version of PHP (which has zip enabled), but composer was using the PHP version found in the PATH variable.

Solution for me: Since I am using MAMP I modified the PATH in /etc/paths to have the MAMP PHP PATH on the very beginning, e.g.

/Applications/MAMP/bin/php/php7.1.31/bin
/usr/local/bin
/usr/bin
/bin
/usr/sbin
/sbin


After that change composer update should work again as expected (make sure you close your Terminal first and do the update in a new Terminal window). Also php -m should now definitely list the zip extension