作曲家和小天鹅



如果您尝试"全局"安装Composer,则无法在Cygwin中正常运行。

将 composer.phar 放入/usr/local/bin/composer 中,然后尝试运行它将导致错误:

Could not open input file: /usr/local/bin/composer

只是绊倒了同样的问题并找到了解决方案。把它贴在这里,以防万一我不得不再次查找它。

  1. /home/my-username 下设置bin目录:

    cd ~
    mkdir bin
    
  2. 移动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
    
  3. 告诉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
    
  4. 现在,对于最重要的部分:

    一个包装脚本,帮助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" "$@"
    
  5. 现在重新启动你的 shell,它应该在任何时候正确调用 PHP 解释器偶然发现了一个#!/usr/bin/env php的舍邦。只需发出:

    composer --help
    

这个怎么样?

  1. 在 ~/.bashrc 中,添加: alias composer='php c:\your\path\to\composer.phar'
  2. 重新启动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
  1. PHP 并在 Cygwin 中安装 composer.phar。

  2. 安装Windows PHP并安装Winodows Composer,然后从Cygwin调用。(Windows XAMMP+Composer with alias in cmd(


您的问题是由Cygwin作

曲家在Cygwin上的Windows PHP破坏引起的,因此它无法识别文件路径。

安装Cygwin

PHP后,作曲家将与Cygwin PHP集成,然后适合Cygwin的文件路径。

Cygwin PHP 作曲家使用的扩展:

php
php-json
php-mbstring
php-phar 
php-zip
php-posix

当需要作曲家的软件包时,您可以安装其他PHP扩展,例如php-xmlwriterphp-tokenizerphp-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 内部在全球范围内工作是一件很痛苦的事情......

我想出的解决方案:

  1. 不要全局使用它。如果你在Windows安装中使用PHP CLI,它将无法识别Cygwin使用的Linux路径。

    所做的是把它放在我使用作曲家的所有项目的基本目录中,然后做../composer.phar 来运行它。

    它以这种方式工作正常,而且几乎是全球可用的......

  2. 下载,并在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版本"。

更新!这是我所做的:

  1. 从 Cygwin Ports 项目中安装 PHP 和所需的模块
  2. 下载最新的作曲家快照
  3. 将"composer.phar"重命名为"composer"并将其保存到/usr/local/bin
  4. 打开/bin/dash.exe 并运行 '/usr/bin/rebaseall'
  5. 另外,如果 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中运行得很好。

相关内容

  • 没有找到相关文章