How do I run Composer using a custom PHP interpreter in WSL2? Follow
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??
Please sign in to leave a comment.
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 callphp7.4
by changing its hashbang.