全球安装Composer(手动)

我按照composer manual(全局安装composer的手册)的指引,在Ubuntu上安装了composer。
$ 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

其他位于/usr/local/bin/的脚本都可以正常运行,但是composer却报错如下: $php composer.phar update 无法打开输入文件:composer.phar 只有当我输入绝对路径到composer.phar时才能正常工作。 如何解决这个问题?
8个回答

简介;

如在Composer 网站所描述:

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

手动方法

我发现了一个比在githubreadme.md中所规定的手动安装composer更简单的方法。实际上,这个方法可以在getcomposer.org网站上找到:

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

如果你像我一样非常懒的话,你甚至可以创建一个别名:
alias composer='/usr/local/bin/composer.phar'

这样你就可以只用composer来调用composer了。

12不错。对于有强迫症的人来说,使用别名也是一个很好的选择。输入文件扩展名?呸!那只是给傻瓜用的。 - eggonlegs
5懒惰,创造力之母。最新的更新是最好的! - Pierre de LESPINAY
当我运行$ sudo mv composer.phar /usr/local/bin/composer,然后尝试输入$ composer时,会出现错误:bash: /usr/local/bin/composer: Permission denied。我应该如何更改这些权限? - Connor Leech
@ConnorLeech 你可以运行 chmod +x /usr/local/bin/composer - Chibueze Opata
自从最后一次更新以来,这是最好的版本,我建议删除之前的所有内容。你觉得怎么样,@chrisjlee? - Kim Stacks
1@KimStacks 我认为保留它的上下文是有道理的。 - chrisjlee
至少你把最好的方法放在了最前面。这很好! - Kim Stacks
这是我对你精彩答案的改编。https://gist.github.com/simkimsia/0c218cadbb3055d53417 唯一的区别是我将其移动到 /usr/share 并使其对所有用户可访问。 - Kim Stacks
当我输入curl -sS https://getcomposer.org/installer | php时,它显示curl: (6) Couldn't resolve host 'getcomposer.org'。这是怎么回事? - Thusitha Sumanadasa
@ThusithaSumanadasa LMGTFY: https://www.google.com/search?q=curl%3A+(6)+Couldn%27t+resolve+host&oq=curl%3A+(6)+Couldn%27t+resolve+host&aqs=chrome..69i57j69i58.296j0j1&sourceid=chrome&es_sm=122&ie=UTF-8 http://stackoverflow.com/questions/24221642/following-url-curl-couldnt-resolve-host-get :) - chrisjlee
另外,别忘了在关闭终端会话后,别名将被遗忘。你需要将那行代码放到你的 .bashrc 或者 .bash_profile 文件中。 - totymedli

不要在开头添加php。只需调用composer.phar即可。

好的,谢谢。解释会很好,我很好奇。再次感谢。 - umpirsky
2它能够工作是因为Composer已经是一个可执行文件(默认情况下具有u+x权限)。所以,不需要执行php,因为shell会自动执行它。 - netvision73
3composer.phar的第一行有一个特殊的代码 #!/usr/bin/env php,它告诉Ubuntu这个文件是一个php文件,并且应该使用php程序来运行。 - T0xicCode

实际上,getcomposer.org 现在推荐了一种更简单的方法:

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

现在你可以直接使用composer,而不需要担心别名或单独的sh脚本。

这是正确的。 - Jack Franzen

另一种获取一个漂亮的composer命令而不是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

4你甚至可以使用--filename=composer来保存符号链接部分 :) - magnetik

为了更方便地执行,我创建了/usr/local/bin/composer并写入以下内容:
#!/bin/sh
exec /usr/local/bin/composer.phar "$@"

不要忘记执行 sudo chmod +x /usr/local/bin/composer.phar 命令。

以下是全局安装Composer的步骤: 1. 在安装Composer之前,请确保我们的服务器已安装所有依赖项。
首先,通过运行以下命令更新软件包管理器缓存:
$ sudo apt-get update

2. 现在,让我们安装依赖项。我们将需要:
  • curl => 用于下载Composer
  • php5-cli => 安装和运行它
  • git => Composer用于下载项目依赖项

可以使用以下命令安装所有内容:

$ sudo apt-get install curl php5-cli git

3. 通过一个简单的命令安装Composer:
curl -sS https://getcomposer.org/installer | sudo php -- --install-dir=/usr/local/bin --filename=composer

4. 这将下载并安装Composer作为系统范围的命令,命名为composer,在/usr/local/bin下。输出应该如下所示:
输出:
\#!/usr/bin/env php
All settings correct for using Composer
Downloading...

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

使用方法:php /usr/local/bin/composer 5. 要测试您的安装,请运行:
$ composer -V

输出:

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

我制作了一个简单的bash脚本,可以自动为当前用户/所有用户安装composer,您可以在终端中使用以下命令之一来使用bash脚本。 当前用户
wget -O - https://gist.github.com/EmpireWorld/1dd5f59566e186907f99dc16badc382a/raw/install-composer-local.sh | bash

所有用户

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

查看要点


这可能对你有用。注意这里使用了sudo两次。

sudo curl -sS https://getcomposer.org/installer | sudo php

1嗨!欢迎来到Ask Ubuntu。目前来看,不清楚这些命令为什么能解决提问者的问题。你能否请编辑你的问题并详细说明你的答案? - grooveplex