有没有办法在Windows上全局安装Composer?

61

我已阅读Composer的全局安装文档,但该文档仅适用于*nix系统:

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

如果我能在我的开发机上运行相同的操作系统Windows,那将会使我非常开心。

composer update

从任意存在composer.json文件的文件夹开始。解释器php.exe已经存在于PATH变量中。

有任何线索吗?

14个回答

88

没问题。只需将 composer.phar 放在类似于 C:\php\composer.phar 的地方,然后在 PATH 中的任何位置创建一个名为 composer.bat 的批处理文件,文件内容如下:

@ECHO OFF
php "%~dp0composer.phar" %*

"%*"重复传递给Shell脚本的所有参数。

然后你可以随意运行composer update了!


1
无法打开输入文件:composer.phar,而且PATH是正确的。帮帮忙! - gremo
那么,请在您的批处理文件中尝试编写绝对路径。 - Lusitanian
2
好的,使用绝对路径可以工作,谢谢。尽管我更喜欢相对路径 :) - gremo
1
稍微通用一些:SET SUBDIR=%~dp0 php %SUBDIR%/composer.phar %* - Johannes Reiners
不是问题的范围,但您可以使用类似console2的东西。 - thoroc

29

1
我使用这个安装程序,但是一些方式没有将Composer添加到PATH中。 - Milad
@Milad,我也遇到了同样的问题。你使用的是哪个Windows版本?我的是Windows 8。我也不得不手动添加Composer的路径。 - Osh Mansor
@OshMansor,之前我使用的是Windows 8.1,但现在我改用了Windows 7,一切都很顺利。我在Windows 8上遇到了很多问题,比如Android Studio和一些VS 2013版本。我采用了Lusitanian的方法,它对我有用。 - Milad
你知道默认的composer.json文件是在哪里创建的吗? - Hunter Nelson

24

前往php.exe所在的文件夹。

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

在该文件夹中打开命令提示符,并执行以下命令。

php -r "readfile('https://getcomposer.org/installer');" | php

composer.phar将会被下载到同一文件夹。

C://驱动器中创建名为composer的文件夹(或任何您希望使用的地方,对于接下来的步骤,请记住路径)。

composer.phar文件移动到C://composer文件夹中。

在相同的文件夹中创建composer.bat文件,并包含以下内容。

@ECHO OFF
php "%~dp0composer.phar" %*

创建名为composer的文件,不带任何扩展名。

在CMD中运行命令type NUL > composer可以快速完成此操作。

打开该文件并将以下内容放入其中。

#!/bin/sh
dir=$(d=$(dirname "$0"); cd "$d" && pwd)
# see if we are running in cygwin by checking for cygpath program
if command -v 'cygpath' >/dev/null 2>&1; then
    # cygwin paths start with /cygdrive/ which will break windows PHP,
    # so we need to translate the dir path to windows format. However
    # we could be using cygwin PHP which does not require this, so we
    # test if the path to PHP starts with /cygdrive/ rather than /usr/bin.
    if [[ $(which php) == /cygdrive/* ]]; then
        dir=$(cygpath -m $dir);
    fi
fi
dir=$(echo $dir | sed 's/ /\ /g')
php "${dir}/composer.phar" $*

保存。

现在设置path,这样我们就可以从命令行访问composer。

  • 显示桌面。

  • 右键单击桌面上的“我的电脑”快捷方式。

  • 单击“属性”。

  • 您应该看到控制面板的一个部分 - 控制面板\系统和安全\系统。

  • 单击左侧菜单中的“高级系统设置”。

  • 单击窗口底部的“环境变量”。

  • 在用户变量列表中选择PATH。

  • 将您的PHP路径(C:\ composer)附加到您的PATH变量中,与已有字符串用半角冒号隔开。

  • 单击“确定”

重新启动计算机。

或者,在CMD中仅重启explorer,使用以下命令。

taskkill /f /IM explorer.exe
start explorer.exe
exit

原始文章和截图请查看此处:http://aslamise.blogspot.com/2015/07/installing-composer-manually-in-windows-7-using-cmd.html


1
感谢您解决了Windows命令提示符和Cygwin的问题。我使用了您的脚本(composer.batcomposer),并将它们更加通用,以便与任何phar文件一起使用,例如phpunit、phpcs、phpmd等等。一个脚本来管理所有这些,可以说是非常方便了。 - Mikael Roos
这是2017年,两年过去了。这刚刚为我节省了数小时的在线搜索时间。谢谢。 - NaijaProgrammer

12

以下内容可能会对某些人有用:

在Windows 7上,如果您使用curl安装了Composer,则可以在类似路径中找到它:

C:\Users\<username>\AppData\Roaming\Composer


6

它要求 php.exe,但我找不到任何文件。 - Mr X
@atjoshi:你需要在Windows上安装PHP。 [Xampp](https://www.apachefriends.org/)非常好且相对容易设置。 - User

3

我使用Composer-Setup.exe,它很好用。 以防您需要知道composer.phar的位置(与PhpStorm一起使用):

C:\ProgramData\ComposerSetup\bin\composer.phar

3

开始 > 计算机 : 属性 > 更改设置 > 高级 > 环境变量 > PATH : 编辑 [在行末添加此字符串 (不包括引号) ";C:\<php文件夹路径>\php5.5.3"].. 打开命令提示符并输入composer就可以了 :-)


3
很遗憾,这里所有的好答案都对我没用。在在Windows 10上安装了Composer之后,我只需要在"环境变量"中设置"系统变量",它就能正常工作。
请参考下面的图片: Windows 10 environment variable -> system variables

3
这并没有完全解决问题。相反,我将C:\ProgramData\ComposerSetup\bin'\composer添加到了我的PATH变量中,这对我起作用了。 - Derk Jan Speelman

3
如果您将批处理文件放在与composer.phar相同的文件夹中,那么这个方法更通用:
@ECHO OFF
SET SUBDIR=%~dp0
php %SUBDIR%/composer.phar %*

我会将其写为注释,但是代码并不可用


我将您的代码合并到上面的答案中,以增加其可见性。 - Seldaek

1

另一种替代方案(请参见Lusitanian answer)是将.phar文件注册为可执行文件,例如:phar.reg文件:

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\.phar]
@="phar_auto_file"

[HKEY_CLASSES_ROOT\phar_auto_file\shell\open\command]
@="\"c:\\PROGRA~1\\php\\php.exe\" \"%1\" %*"

只需将路径替换为您的PHP可执行文件php.exe。然后,您还可以使用.PHAR扩展%PATHEXT%命令行变量,这将允许您键入composer而不是composer.phar,只要composer.phar%Path%中即可。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接