Cygwin 作曲家及;西格温

Cygwin 作曲家及;西格温,cygwin,composer-php,Cygwin,Composer Php,如果您尝试“全局”安装Composer,它将无法在Cygwin中正确运行 将composer.phar放入/usr/local/bin/composer,然后尝试运行它将导致错误: Could not open input file: /usr/local/bin/composer 让作曲家在Cygwin的全球范围内工作是件痛苦的事 我提出的解决方案如下: 不要在全球范围内使用它。如果您在Windows安装中使用PHP CLI,它将无法识别Cygwin使用的Linux路径 我所做的是将它放在我

如果您尝试“全局”安装Composer,它将无法在Cygwin中正确运行

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

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

让作曲家在Cygwin的全球范围内工作是件痛苦的事

我提出的解决方案如下:

  • 不要在全球范围内使用它。如果您在Windows安装中使用PHP CLI,它将无法识别Cygwin使用的Linux路径

    我所做的是将它放在我使用composer的所有项目的基本目录中,然后执行../composer.phar来运行它

    这样做很好,而且几乎可以在全球范围内使用

  • 在Cygwin中下载并编译您自己的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


      • 刚刚被同样的问题绊倒并找到了解决方案。把它贴在这里,以防万一我再查一遍

      • /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\u 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/…
        路径)

        编辑包装器脚本后,
        ~/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" "$@"
        

      • 最简单的方法是使用Windows installer从其网站安装composer,然后将两个文件“composer”和“composer.phar”从“C:\ProgramData\composer”复制到PATH变量中的目录中。例如,您可以将文件复制到cygwin的/bin/目录中。之后,您可以再次卸载composer的“Windows版本”

        更新我就是这么做的:

      • 从中安装PHP和所需的模块
      • 下载
      • 将“composer.phar”重命名为“composer”,并将其保存到/usr/local/bin
      • 打开/bin/dash.exe并运行“/usr/bin/rebaseal”
      • 如果4。给您一个错误,composer应该立即运行

      • 我在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:\wamp\bin\php\php5.4.3\composer"
        
        基本上,您必须使用Windows风格的路径来调用PHP,而不是cygwin路径。

        我所做的(非常简单):

        • 通常使用Windows安装程序安装Composer
        • 打开Cygwin控制台类型
          composer
          您将看到类似
          无法打开输入文件:/c/route/to/your/composer/installation/bin的内容
        • 在您的bash配置文件或bashrc或其他文件上创建别名
          composer='composer.bat'
        • 完成

        我正在运行Windows 8.1,我也遇到了同样的问题。从composer安装程序中读取最后一条指令后,它说应该重新加载$PATH变量。我重新启动了计算机,然后将Composer bin链接到
        /usr/local/bin

        首先找到composer容器:
        /cygdrive/c/ProgramData/composer设置/bin/composer

        #!/bin/sh
        /cygdrive/c/ProgramData/ComposerSetup/bin/composer $@
        
        然后根据答案,在尝试了一个不起作用的符号链接后,我做了:

        nano/usr/local/bin/composer

        #!/bin/sh
        /cygdrive/c/ProgramData/ComposerSetup/bin/composer $@
        
        chmod+x/usr/local/bin/composer

        #!/bin/sh
        /cygdrive/c/ProgramData/ComposerSetup/bin/composer $@
        
        它正在工作。

        这个怎么样

      • 在~/.bashrc中,添加:
        alias composer='php c:\\your\\path\\to\\composer.phar'
      • 重新启动cygwin或通过运行
        source~/.bashrc

      • 我可以使用Cygwin的原生php.exe和XAMPP的Windows专用php.exe。我建议您使用babun,它基于Cygwin,但您可以通过pact安装软件包,您可以执行以下操作:

        pact安装php json php phar

        php-r“readfile(“”);”php


        那就尽情享受吧。

        我遇到了这个问题。大多数的回答都让我不知所措,但我毫无问题地解决了

        步骤1)按照以下步骤全局重新安装Composer

        第二步)别管它。所有你想做的特殊事情,不要那样做

        步骤3)从下载最新的setup-xxx.exe

        步骤4)用鼠标单击它

        注意:在第五步中,你会突然感觉到阅读说明的冲动,浏览网页获取信息,并开始勾选菜单上的小方框。不要那样做

        步骤5)单击“下一步”,直到它停止询问。它将查看您现有的 设置、修复和添加任何缺少的依赖项


        这对我很有效。

        我在让Composer在Cygwin中工作时遇到了困难,上面的解决方案都不能解决我的问题。最终,我在作曲家github bugs的讨论中偶然发现:

        是的,使用cygwin的php不是一个好主意,cygwin的环境太不一样了。造成失败的黑客太多了。。在任何情况下,在这里关闭,就像在那里关闭一样
        php
        php-json
        php-mbstring
        php-phar 
        php-zip
        php-posix
        
        apt-cyg install php php-json php-mbstring php-phar php-zip php-posix
        apt-cyg install php-xmlwriter php-tokenizer php-ctype
        
        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