How do I run Composer using a custom PHP interpreter in WSL2?

This might sound obvious, but I can't get this to work. I have an old project that I've migrated to WSL2. For reasons I won't go into, the Composer dependencies are not installed. When I run "composer install" from PhpStorm, I get a bunch of error messages containing the phrase "your php version (8.1.4) does not satisfy that requirement". This in spite of the fact that I thought I had properly configured PhpStorm to use PHP 7.4 on my WSL2 distro. Under the PHP interpreter settings, I have created a custom profile (named "Ubuntu-20.04 (7.4)") for this purpose (I selected that I wanted a remote interpreter from WSL2, and I entered the path to PHP, /usr/bin/php7.4). PhpStorm recognizes that the version is 7.4.28. Then, under Composer settings, I checked "Remote Interpreter", I selected "Ubuntu-20.04 (7.4)", and for "Composer executable" I entered "composer".

Despite all this, it seems that PhpStorm is executing composer directly rather than passing it as an argument to PHP. I thought, therefore, that I could fix the problem by selecting "composer.phar" instead of "Remote Interpreter". I entered the path to Composer in WSL2 (\\wsl$\Ubuntu-20.04\home\[myname]\bin\composer) and selected "Ubuntu-20.04 (7.4)" as my interpreter. When I did this and ran "composer install", I got this message:

Phar path "\\wsl$\Ubuntu-20.04\home\[myname]\bin\composer" is not mapped to a path for interpreter. Configure mappings in settings

But there are no path mapping options if I have "composer.phar" checked. What should I do? Yes, it's easy to just use the command line and run "php7.4 /home/[myname]/bin/composer install", but that's a little clunky and besides I thought I could do this through PhpStorm. I'm not interested at the moment in updating my Composer dependencies to be 8.1-compatible. I should be able to select an older PHP interpreter and use that to run Composer, otherwise what is the point of giving me an interpreter option? What am I missing??

1 comment
Comment actions Permalink

Despite all this, it seems that PhpStorm is executing composer directly rather than passing it as an argument to PHP.

That is true. The remote interpreter is only being used to specify where to run tools, but not how to run them.
https://youtrack.jetbrains.com/issue/WI-64127

As a workaround, you can make the composer executable call php7.4 by changing its hashbang.

0

Please sign in to leave a comment.