如果您尝试"全局"安装Composer,则无法在Cygwin中正常运行。
将 composer.phar 放入/usr/local/bin/composer 中,然后尝试运行它将导致错误:
Could not open input file: /usr/local/bin/composer
只是绊倒了同样的问题并找到了解决方案。把它贴在这里,以防万一我不得不再次查找它。
-
在
/home/my-username
下设置bin
目录:cd ~ mkdir bin
-
移动
composer.phar
(或任何其他正在崛起的漂亮的新PHP小鬼(进入~/bin
目录,并确保设置其执行位:# Notice how I got rid of the superfluous `.phar` extension mv /path/to/composer.phar ~/bin/composer chmod +x ~/bin/composer
-
告诉
cygwin
在搜索路径中包含您的~/bin
目录:打开文件
~/.bash_profile
并取消注释以下段落...# Set PATH so it includes user's private bin if it exists if [ -d "${HOME}/bin" ] ; then PATH="${HOME}/bin:${PATH}" fi
-
现在,对于最重要的部分:
一个包装脚本,帮助Win的原生PHP解析Unix样式路径(这导致毕竟问题在于 Windows 不知道如何处理
/cygdrive/...
路径(。cd ~/bin touch php chmod +x php
编辑包装脚本后
~/bin/php
应为:#!/bin/bash # e.g. php="/cygdrive/c/Program Files (x86)/php/php.exe" php="/path/to/php.exe" for ((n=1; n <= $#; n++)); do if [ -e "${!n}" ]; then # Converts Unix style paths to Windows equivalents path="$(cygpath --mixed ${!n} | xargs)" case 1 in $(( n == 1 )) ) set -- "$path" "${@:$(($n+1))}";; $(( n < $# )) ) set -- "${@:1:$((n-1))}" "$path" ${@:$((n+1)):$#};; *) set -- "${@:1:$(($#-1))}" "$path";; esac fi done "$php" "$@"
-
现在重新启动你的 shell,它应该在任何时候正确调用 PHP 解释器偶然发现了一个
#!/usr/bin/env php
的舍邦。只需发出:composer --help
这个怎么样?
- 在 ~/.bashrc 中,添加:
alias composer='php c:\your\path\to\composer.phar'
- 重新启动cygwin或通过运行
source ~/.bashrc
重新加载bashrc
使用Cygwin的原生php.exe和XAMPP的Windows特定php对我有用。
我认为可能有效的是建立一个代理:
- 将 composer.phar 放入/usr/local/bin/composer.phar
-
创建一个 bash 代理作为/usr/local/bin/composer 使用以下命令:
#!/bin/sh c:/path/to/php c:/path/to/composer.phar $@
-
chmod +x/usr/local/bin/composer
试试这个:
- 安装 Cygwin
- PHP 并使用它来在 Cygwin 中运行作曲家。
您可以选择以下两种方式之一来在 Cygwin 中使用 PHP+Composer:
- 安装 Cygwin
PHP 并在 Cygwin 中安装 composer.phar。
安装Windows PHP并安装Winodows Composer,然后从Cygwin调用。(Windows XAMMP+Composer with alias in cmd(
您的问题是由Cygwin作
曲家在Cygwin上的Windows PHP破坏引起的,因此它无法识别文件路径。
安装CygwinPHP后,作曲家将与Cygwin PHP集成,然后适合Cygwin的文件路径。
Cygwin PHP 作曲家使用的扩展:
php
php-json
php-mbstring
php-phar
php-zip
php-posix
当需要作曲家的软件包时,您可以安装其他PHP扩展,例如php-xmlwriter
,php-tokenizer
,php-ctype
。
安装命令指南:
如果你已经安装了 apt-cyg,上面有安装命令:
apt-cyg install php php-json php-mbstring php-phar php-zip php-posix
apt-cyg install php-xmlwriter php-tokenizer php-ctype
然后通过Cygwin PHP安装Composer:
php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
php composer-setup.php
php -r "unlink('composer-setup.php');"
chmod +x ./composer.phar
mv ./composer.phar /usr/bin/composer
composer -v
结论
我建议使用Windows PHP + Windows Composer,然后在Cygwin中调用,这是因为Cygwin PHP并不比Windows PHP稳定多少。
我遇到了同样的问题。在阅读作曲家安装程序的最终指令后,它说应该重新加载$PATH变量。我重新启动了计算机,然后将作曲家箱链接到/usr/local/bin
。
首先找到作曲家箱: /cygdrive/c/ProgramData/ComposerSetup/bin/composer
然后根据Seldaek的回答,在尝试了一个不起作用的符号链接后,我做了:
nano /usr/local/bin/composer
#!/bin/sh
/cygdrive/c/ProgramData/ComposerSetup/bin/composer $@
chmod +x /usr/local/bin/composer
它正在起作用。
我做了什么(非常简单(:
- 使用 Windows 安装程序正常安装 Composer
- 打开一个类型的Cygwin控制台
composer
你会看到类似Could not open input file: /c/route/to/your/composer/installation/bin
- 在您的 bash 个人资料或 bashrc 或其他任何东西上创建别名
composer='composer.bat'
- 做
我正在运行Windows 8.1
我遇到了这个问题。大多数回复都超出了我的头脑,但我修复了它,没有问题。
步骤1(按照 https://getcomposer.org/download/全局重新安装编辑器
步骤2(别管它。所有你想做的特殊事情,都不要那样做。
步骤3(从 https://cygwin.com/下载最新版本-xxx.exe
步骤4(用鼠标单击它。
注意:在步骤5中,您会突然感到阅读说明,浏览网页以获取信息并开始选中菜单上的小框的冲动。别这样。
步骤5(单击"下一步",直到停止询问。它将查看您现有的设置,修复内容并添加任何缺少的依赖项。
这对我有用。
让作曲家在 Cygwin 内部在全球范围内工作是一件很痛苦的事情......
我想出的解决方案:
-
不要全局使用它。如果你在Windows安装中使用PHP CLI,它将无法识别Cygwin使用的Linux路径。
我所做的是把它放在我使用作曲家的所有项目的基本目录中,然后做../composer.phar 来运行它。
它以这种方式工作正常,而且几乎是全球可用的......
-
下载,并在Cygwin中编译您自己的PHP二进制文件...是的,有点矫枉过正。
我在Cygwin/XAMPP设置中解决了这样的问题:
-
将
composer.phar
安装到 XAMPP 的php
目录 -
在 XAMPP 的
php
目录中创建一个名为composer
的可执行 Bash 脚本:#!/bin/bash script_dir=$(cygpath -w $(dirname $0)) php "$script_dir/composer.phar" $@
使用
cygpath -w
将路径转换为 Windows 窗体中的路径非常重要。 -
确保XAMPP的
php
目录可以在Cygwin的$PATH
中访问:$ export PATH=$PATH:/cygdrive/i/dev/server/xampp/php
现在可以从您喜欢的任何地方拨打composer
,而不会出现问题:
$ composer -V
Composer version 264f433ca3f007d39568b3722b4bf418f58ba15b
我通过添加一个/usr/local/bin/composer
文件来修复它:
nano /usr/local/bin/composer
包含以下内容:
#!/bin/bash
/cygdrive/c/wamp/bin/php/php5.4.3/php "C:wampbinphpphp5.4.3composer"
基本上,你必须用Windows风格的路径调用PHP,而不是cygwin路径。
最简单的方法是使用Windows安装程序从他们的网站安装作曲家,然后将两个文件"composer"和"composer.phar"从"C:\ProgramData\Composer"复制到PATH变量中的目录中。 例如,您可以将文件复制到cygwin的/bin/目录中。之后,您可以再次卸载作曲家的"Windows版本"。
更新!这是我所做的:
- 从 Cygwin Ports 项目中安装 PHP 和所需的模块
- 下载最新的作曲家快照
- 将"composer.phar"重命名为"composer"并将其保存到/usr/local/bin
- 打开/bin/dash.exe 并运行 '/usr/bin/rebaseall'
- 另外,如果 4. 给你一个错误,作曲家现在应该运行
我建议你使用 babun,它是基于 cygwin 的,但你可以通过 pact 安装软件包,你可以这样做:
PACT 安装 PHP PHP-JSON PHP-PHAR
PHP -r "readfile('https://getcomposer.org/installer'(;" | php
然后尽情享受。
我在让作曲家在 Cygwin 中工作时遇到了麻烦,上面的解决方案都没有解决我的问题。最终,我在Composer github错误讨论中偶然发现了这条评论:
是的,TBH使用来自Cygwin的php不是一个好主意,Cygwin是一个太不同的环境。太多的黑客制造失败..无论如何,我们在这里关闭,因为我们无能为力,恐怕:)
我不知道作曲家/Cygwin/php 到底在哪里绊倒了,但是,从广义上讲,我的问题是我在环境变量中有两个相互冲突的 PHP 安装,一个来自 WAMP 的安装,另一个来自 Cygwin 的安装。Cygwin PHP安装似乎正在与某种路径问题作斗争。我删除了它,只使用WAMP PHP,作曲家在Cygwin中运行得很好。