86

I followed composer manual (global installation of composer (manual)) to install composer on Ubuntu.

$ ll /usr/local/bin/
total 4760
drwxr-xr-x  2 root root    4096 2012-03-29 08:29 ./
drwxr-xr-x 10 root root    4096 2011-04-26 00:50 ../
-rwxr-xr-x  1 root root  410324 2012-03-29 08:28 composer.phar

Other scripts from /usr/local/bin/ works, but composer gives:

$php composer.phar update Could not open input file: composer.phar

It works only if I enter absolute path to composer.phar. How to fix this?

8 Answers 8

200

TLDR;

As described on the Composer website:

curl -sS https://getcomposer.org/installer | php
sudo mv composer.phar /usr/local/bin/composer

Manual Method

I found an easier way to globally install composer than the manual proscribed in the github readme.md. It's actually on the getcomposer.org website:

curl -s http://getcomposer.org/installer | php
sudo mv composer.phar /usr/local/bin/

And if you're even more lazy, like me, you can create an alias:

alias composer='/usr/local/bin/composer.phar'

This way you can invoke composer with just composer

11
  • 12
    Nice. The alias is a sweet touch for obsessive compulsives too. Typing in file extensions? Pfeh! That's for chumps
    – eggonlegs
    Aug 15, 2012 at 14:00
  • 5
    Laziness, mother of creativity. Last update is the best ! Oct 21, 2013 at 7:27
  • when I run $ sudo mv composer.phar /usr/local/bin/composer and then try to type $ composer I get the error: bash: /usr/local/bin/composer: Permission denied How can I change these permissions? Jan 13, 2014 at 9:19
  • 1
    @KimStacks I think it makes sense to keep it there context.
    – chrisjlee
    Mar 28, 2014 at 3:39
  • 1
    Also, don't forget that aliases will be forgotten after you close the terminal session. You have to place that line to your .bashrc or .bash_profile file.
    – totymedli
    Apr 28, 2015 at 15:04
29

Don't add php in the beginning. Just call composer.phar.

3
  • It works, thanks. Explanation would be great, I'm curious. Thanks again.
    – umpirsky
    Jun 19, 2012 at 19:18
  • 2
    It works because composer is already an executable (it has u+x rights by default). So, no need to execute php, because shell will do it anyway. Jan 9, 2014 at 10:36
  • 3
    And there is a special code on the first line of composer.phar, #!/usr/bin/env php which tells ubuntu that the file is a php file and should be run with the php program.
    – T0xicCode
    Feb 8, 2014 at 19:36
28

Actually, getcomposer.org now recommends a simpler method:

$ curl -sS https://getcomposer.org/installer | php
$ sudo mv composer.phar /usr/local/bin/composer

Now you can just use composer without bothering with an alias or a separate sh script.

1
7

Another alternative to get a nice composer command instead of composer.phar:

$ curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin
$ ln -s /usr/local/bin/composer.phar /usr/local/bin/composer
1
  • 4
    You can even use --filename=composer to save the symlink part :)
    – magnetik
    May 15, 2014 at 14:50
5

for easier execution I created /usr/local/bin/composer with content:

#!/bin/sh
exec /usr/local/bin/composer.phar "$@"

dont forget about sudo chmod +x /usr/local/bin/composer.phar

3

Below are the steps to be followed to install composer globally: 1. Before installing Composer, make sure our server has all dependencies installed.

1st, update the package manager cache by running:

$ sudo apt-get update

2. Now, let's install the dependencies. We'll need

  • curl => to download Composer
  • php5-cli => installing and running it
  • git => used by Composer for downloading project dependencies

Everything can be installed with the following command:

$ sudo apt-get install curl php5-cli git

3. Composer installation with a single command:

curl -sS https://getcomposer.org/installer | sudo php -- --install-dir=/usr/local/bin --filename=composer

4. This will download and install Composer as a system-wide command named composer, under /usr/local/bin. The output should look like this:

Output:

\#!/usr/bin/env php
All settings correct for using Composer
Downloading...

Composer successfully installed to: /usr/local/bin/composer

Use it: php /usr/local/bin/composer

5. To test your installation, run:

$ composer -V

Output:

Composer version 1.1.3 2016-06-26 15:42:08
  1. Installation Successful
0

I have made a simple bash script that automatically installs composer for current user/all users, you can one of the following commands in your terminal to use bash script.

Current User

wget -O - https://gist.github.com/EmpireWorld/1dd5f59566e186907f99dc16badc382a/raw/install-composer-local.sh | bash

All Users

wget -O - https://gist.github.com/EmpireWorld/1dd5f59566e186907f99dc16badc382a/raw/install-composer-global.sh | bash

Check out the Gist

-1

This might work for you. Note that sudo is used two times here.

sudo curl -sS https://getcomposer.org/installer | sudo php
1
  • 1
    Hi! Welcome to Ask Ubuntu. As it stands, it's not clear why the commands might solve the issue the OP has. Can you please edit your question and elaborate on your answer?
    – grooveplex
    Jun 17, 2016 at 10:45

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .