如果您尝试“全局”安装 Composer,它将无法在 Cygwin 中正确运行。
将composer.phar放入/usr/local/bin/composer,然后尝试运行会报错:
Could not open input file: /usr/local/bin/composer
如果您尝试“全局”安装 Composer,它将无法在 Cygwin 中正确运行。
将composer.phar放入/usr/local/bin/composer,然后尝试运行会报错:
Could not open input file: /usr/local/bin/composer
刚刚遇到同样的问题并找到了解决方案。把它贴在这里,以防万一我不得不再次查找它。
在下面设置一个bin
目录/home/my-username
:
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,它应该在遇到#!/usr/bin/env php
shebang 时正确调用 PHP 解释器。只需发出:
composer --help
这个怎么样?
alias composer='php c:\\your\\path\\to\\composer.phar'
source ~/.bashrc
使用 Cygwin 的本机 php.exe 和 XAMPP 的 Windows 特定的一个对我有用。
我认为可能可行的是构建代理:
使用以下内容创建一个 bash 代理作为 /usr/local/bin/composer:
#!/bin/sh
c:/path/to/php c:/path/to/composer.phar $@
chmod +x /usr/local/bin/composer
试试这个:
您可以选择以下两种方式之一在 Cygwin 中正常使用 PHP+Composer:
安装 Cygwin PHP 并在 Cygwin 中安装 composer.phar。
安装 Windows PHP 并安装 Winodows Composer,然后从 Cygwin 调用。(在 cmd 中有别名的 Windows XAMMP+Composer)
您的问题是由于 Cygwin Composer 被 Cygwin 上的 Windows PHP 破坏造成的,因此它无法识别文件路径。
安装 Cygwin PHP 后,composer 将与 Cygwin PHP 集成,然后适应 Cygwin 的文件路径。
php
php-json
php-mbstring
php-phar
php-zip
php-posix
当需要 composer 的包时,您可以安装其他 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 变量。我重新启动计算机,然后将 Composer bin 链接到/usr/local/bin
.
首先找到作曲家 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
它正在工作。
我做了什么(非常简单):
composer
您将看到类似的类型Could not open input file: /c/route/to/your/composer/installation/bin
composer='composer.bat'
在您的 bash 配置文件或 bashrc 或其他任何内容上创建别名我正在运行 Windows 8.1
我遇到了这个问题。大多数回复都在我的脑海中,但我没有问题地修复它。
步骤 1) 按照https://getcomposer.org/download/在全球范围内重新安装 Composer
第 2 步)不要管它。所有你想做的特别的事情,不要那样做。
步骤 3) 从https://cygwin.com/下载最新的 setup-xxx.exe
步骤 4) 用鼠标单击它。
注意:在第 5 步中,您会突然有阅读说明、浏览网页以获取信息并开始检查菜单上的小框的冲动。不要那样做。
步骤 5) 单击“下一步”,直到它停止询问。它将查看您现有的设置,修复并添加任何缺少的依赖项。
这对我有用。
让作曲家在 Cygwin 内部全球工作是一件很痛苦的事……
我提出的解决方案:
不要在全球范围内使用它。如果您从 Windows 安装中使用 PHP CLI,它将无法识别 Cygwin 使用的 Linux 路径。
我所做的是将它放在我使用 composer 的所有项目的基本目录中,然后执行 ../composer.phar 来运行它。
它以这种方式运行良好,并且几乎在全球范围内可用......
在 Cygwin 中下载并编译您自己的 PHP 二进制文件……是的,有点矫枉过正。
最简单的方法是使用他们网站上的 Windows 安装程序安装 composer,然后将“C:\ProgramData\Composer”中的“composer”和“composer.phar”两个文件复制到 PATH 变量中的目录中。例如,您可以将文件复制到 cygwin 的 /bin/ 目录中。之后,您可以再次卸载 Composer 的“Windows 版本”。
更新!这就是我所做的:
我在 Cygwin/XAMPP 设置中解决了这样的问题:
安装composer.phar
到 XAMPP 的php
目录
创建一个名为composer
XAMPPphp
目录的可执行 Bash 脚本:
#!/bin/bash
script_dir=$(cygpath -w $(dirname $0))
php "$script_dir/composer.phar" $@
cygpath -w
用于将路径转换为 Windows 形式的路径很重要。
php
确保在 Cygwin 中可以访问XAMPP 的目录$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:\wamp\bin\php\php5.4.3\composer"
基本上,您必须使用 Windows 样式路径而不是 cygwin 路径调用 PHP。
我建议你使用 babun,它基于 cygwin,但是你可以通过 pact 安装包,你可以这样做:
契约安装 php php-json php-phar
php -r "readfile(' https://getcomposer.org/installer ');" | php
然后享受自己。
我无法让 Composer 在 Cygwin 中工作,并且上述解决方案都没有解决我的问题。最终,我在 Composer github bugs 讨论中偶然发现了这条评论:
是的,使用 cygwin 的 php 的 TBH 不是一个好主意,cygwin 的环境太不同了。太多导致失败的黑客行为..无论如何,在这里关闭,因为我们无能为力我害怕:)
我不确切知道composer/Cygwin/php在哪里出错,但总的来说,我的问题是我在环境变量中有两个冲突的PHP安装,一个来自WAMP的安装,另一个来自Cygwin。Cygwin PHP 安装似乎遇到了某种路径问题。我删除了它,只使用 WAMP PHP,作曲家在 Cygwin 中运行得很好。