David
David

Reputation: 10758

composer to use newer version of php

How do i get composer to use a newer version of php i have installed? I have downloaded and am using php 5.4 in all my local servers but when i download composer it points to my mac's default #!/usr/local/bin/env version, which is 5.3.15. I tried editing the composer executable and change the php used but it broke the executable.

I'm trying to use composer to install Laravel and it is downloading the wrong version because of this.

This is what the top of my composer executable looks like but then there's a bunch of weird characters below.

#!/usr/bin/env php
<?php
/*
 * This file is part of Composer.
 *
 * (c) Nils Adermann <[email protected]>
 *     Jordi Boggiano <[email protected]>
 *
 * For the full copyright and license information, please view
 * the license that is located at the bottom of this file.
 */

Phar::mapPhar('composer.phar');
define('COMPOSER_DEV_WARNING_TIME', 1366931166);
require 'phar://composer.phar/bin/composer';

composer.json for laravel project

{
    "require": {
        "laravel/framework": "4.0.*@dev"
    },
    "autoload": {
        "classmap": [
            "app/commands",
            "app/controllers",
            "app/models",
            "app/database/migrations",
            "app/database/seeds",
            "app/tests/TestCase.php"
        ]
    },
    "scripts": {
        "post-update-cmd": "php artisan optimize"
    },
    "minimum-stability": "dev"
}

Upvotes: 23

Views: 23400

Answers (4)

Raul
Raul

Reputation: 1024

sudo vim ~/.bash_profile

add

export PATH="/Applications/MAMP/bin/php/php7.3.1/bin:$PATH"

in the above path I have php 7.3.1 so change that to whatever path you have

then hit Esc then :wq

Upvotes: 0

Diwaker Tripathi
Diwaker Tripathi

Reputation: 448

If you don't care for permanent settings, below command worked for me:

/Applications/MAMP/bin/php/php5.6.27/bin/php /usr/local/bin/composer install

Syntax is:

{PATH TO YOUR PHP VERSION} {PATH TO COMPOSER EXECUTABLE} {COMPOSER COMMAND}

To know the executable path: which {EXECUTABLE} can be very helpful. Ex: which composer gave below output which I used in command above:

/usr/local/bin/composer

Upvotes: 17

hakre
hakre

Reputation: 198209

By default composer on *nix systems uses the PHP binary/executeable specified by the environment. You can see that in the first line which is the shebang:

#!/usr/bin/env php

You can tell the shell to bang against a more concrete PHP version instead, e.g.:

#!/usr/local/php5/bin/php

On Windows systems if you use the composer setup you can specify the PHP binary and the setup then will change the environment to match those needs. But you can as well easily rewrite the batchfile -or- configure the windows operating system to execute .phar files with the specific PHP binary.

Upvotes: 5

David
David

Reputation: 10758

i found the problem. I moved the composer.phar file to my /usr/local/bin/ directory and no matter what i did, it was always using 5.3.15. I deleted the executable from my bin and redownloaded the .phar and moved that to my projects root and ran "php composer.phar install" and it looks like that worked.

To clean things up i did the following:

I left composer.phar at the root of my user profile

/Users/davidadams/composer.phar

I then opened my .bash_profile and added the following alias

alias composer='/usr/local/php5/bin/php /Users/davidadams/composer.phar'

That way it's available to me globally and i can define which php version i want to use. Hopefully others will find this useful.

Upvotes: 13

Related Questions