Search This Blog

Monday, October 10

Run Composer versions 1 and 2 simultaneously

Composer 2 is great. But it is not compatible with PHP versions lesser than 7.2. So if you're maintaining legacy projects that require older PHP versions, like PHP 7.1, you run into errors like this:

PHP Fatal error: Composer detected issues in your platform: Your Composer dependencies require a PHP version ">= 7.2.0". You are running 7.1.33.

If you want to be able to run Composer 1 and 2 next to each other, you can install them both.

Install Composer globally, following the instructions from https://getcomposer.org/doc/00-intro.md#installation-linux-unix-macos

This will install the latest Composer 2 version in /usr/local/bin. (on Mac you can simply run brew install composer)

Move composer to composer2: mv /usr/local/bin/composer /usr/local/bin/composer2

CD to the /usr/local/bin/ folder: /usr/local/bin/

Download the latest V1 version from https://getcomposer.org/download/1.10.17/composer.phar : wget https://getcomposer.org/download/1.10.17/composer.phar

Make the downloaded phar file executable: chmod 755 composer.phar

Rename composer to composer1: mv /usr/local/bin/composer.phar /usr/local/bin/composer1

Now create a symlink for the global version you want to use: ln -s /usr/local/bin/composer1 /usr/local/bin/composer.

If you are using a local PHP switcher like dnsmasq or valet, make sure to use composer1 as your global Composer version - otherwise you will get Composer errors if you are on PHP < 7.2.0. If you never run PHP < 7.2.0 locally, you should use Composer 2 as your default.

To use global Composer: run composer --version

To use global Composer 1: run composer1 --version

To use global Composer 2: run composer2 --version

That's it. Happy coding!

No comments:

Post a Comment