Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Change PHP version used by Composer on Windows

I have already use WAMP 2.5 with PHP 5.5.12, and with Composer. The php is on:

C:\wamp\bin\php\php5.5.12

For new project, I need to use nginx and installed PHP 7. The php is on:

C:\nginx\php

Now, using GitBash MINGW32, I tried to install laravel 5.3 using Composer create-project but it said

[InvalidArgumentException]
Could not find package laravel/laravel with version 5.3 in a version 
installable using your PHP version 5.5.12.

I already put both C:\wamp\bin\php\php5.5.12 and C:\nginx\php on Windows System PATH variable.

How do I change the PHP version used by Composer?

like image 374
JMS786 Avatar asked Oct 05 '16 19:10

JMS786


People also ask

Which PHP version does Composer use?

So, while the 7.2 version is used to run Composer, the scripts called by Composer use the default command.

How do I change my current version of PHP?

In the account Dashboard, in the Settings section, select Server. The current PHP version appears at the top of the list. To change the PHP version, next to PHP version click Change. Select another PHP version from the list and then enter update in the Type 'update' to confirm field.


2 Answers

Although this question was solved, the answer didn't help me. I will explain how I managed to make composer to work in a version of PHP different from the one which is installed by default on my OS (PHP 7.1.1) as well as in my environment variables (these will not be changed !). Note that I'm using Xampp, but the principle remains the same for Wamp.

  • Starting from this answer :

    1. Start up Git Bash
    2. Type cd ~/ to go to your home folder
    3. Type touch .bash_profile to create your new file.
    4. Edit .bash_profile with your favorite editor

  • In my case I have a folder named php733 inside xampp folder which corresponds to PHP 7.3.3. This is this other answer that helped me in creating the alias :

    alias composer733='/c/[xampp folder]/php733/php.exe /c/ProgramData/ComposerSetup/bin/composer.phar '
    

    Then, type . .bash_profile to reload .bash_profile and update any functions you add. Notice the space between the two dots !


Finally, type this command in Git Bash :

composer733 [whatever you wan]

Example : in the project that requires at least PHP 7.1.3

  1. Using composer :

    $ composer update
    This package requires php ^7.1.3 but your HHVM version does not satisfy that requirement.
    
  2. Using composer733 (the alias I created) :

    $ composer733 update
    Loading composer repositories with package information
    Updating dependencies (including require-dev)
    Package operations: 98 installs, 0 updates, 0 removals
      - Installing [...] (v1.11.0): Loading from cache
    

It works, without having to change the environment variables

like image 110
w3spi Avatar answered Oct 23 '22 01:10

w3spi


Three ways to do this, really.

Create an alias in .bashrc to always run composer with the corresponding version

Something like alias ncomposer=`/path/to/php /path/to/composer.phar `

Specify the path to PHP version inside composer.phar itself

This is specified at the start of the file: #!/path/to/php php. Then composer should run with composer.phar

NB! The line will disappear upon self-update, so it's not a reliable solution.

Move up the path with the newest PHP version

If you place C:\nginx\php first, it should be used by default when using composer.

Hope this helps!

like image 29
BVengerov Avatar answered Oct 23 '22 01:10

BVengerov