cygwin - Composer 和 Cygwin

标签 cygwin composer-php

如果您尝试“全局”安装 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,它应该在任何时候正确调用 PHP 解释器
    偶然发现 #!/usr/bin/env php舍邦。只需发出一个:
    composer --help
    
  • 关于cygwin - Composer 和 Cygwin,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12276946/

    相关文章:

    Android Crypto++ 命令行编译,GNUmakefile

    python - 在cygwin中安装python和make

    laravel - 安装 Laravel 时 Composer 错误 "Failed to decode response: zlib_decode(): data error"

    composer-php - 如何将 "dev-master@dev"包含在 composer 的子依赖项中?

    bash - 使用 Cygwin 后无法删除 Windows 7 网络驱动器中的文件夹

    haskell - Cygwin 中的库 "rt"和 "dl"

    c++ - Cygwin 安装说明 :Hand installation over to elevated child process

    php - 安装 Composer 后出现消息 : Set sys_temp_dir in your php. ini

    php - 如何在 Windows 中安装依赖项或使用 Composer

    php - Laravel 4.2 Composer 安装错误 : "could not scan for classes"