web-dev-qa-db-ja.com

Composer&Cygwin

「グローバルに」インストールしようとすると、ComposerはCygwinで正しく実行されません。

Composer.pharを/ usr/local/bin/composerに入れて実行しようとすると、エラーが発生します。

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

同じ問題につまずいて、解決策を見つけました。もう一度調べる必要がある場合に備えて、ここに投稿します。

  1. /home/my-usernameのすぐ下にbinディレクトリを設定します。

    cd ~
    mkdir bin
    
  2. composer.phar(またはその他の気の利いた新しいPHP上昇中のimp))を~/binディレクトリに移動し、set =それは実行ビット

    # 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. ここでシェルを再起動すると、#!/usr/bin/env php Shebangに遭遇するたびに、PHPインタープリターが正しく呼び出されます。単に:を発行します。

    composer --help
    
62
aefxx

これはどう?

  1. 〜/ .bashrcに、次を追加します:alias composer='php c:\\your\\path\\to\\composer.phar'
  2. Cygwinを再起動するか、source ~/.bashrcを実行してbashrcをリロードします

Cygwinのネイティブphp.exeとXAMPPのWindows固有のものの両方を使用して私のために動作します。

10
rkok

代わりにプロキシを作成するのが効果的だと思います。

  • Composer.pharを/usr/local/bin/composer.pharに配置します
  • 以下を使用して、/ usr/local/bin/composerとしてbashプロキシを作成します。

    #!/bin/sh
    c:/path/to/php c:/path/to/composer.phar $@
    
  • chmod + x/usr/local/bin/composer

7
Seldaek

私も同じ問題を抱えていました。 composerインストーラーから最後の命令を読み取った後、$ PATH変数を再ロードする必要があると表示されます。コンピューターを再起動してから、Composer binを/usr/local/binにリンクしました。 。

最初にcomposer 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

そして、それは機能しています。

3
soyuka

これを試して:

  • Cygwin PHPをインストールし、それを使用してCygwinでcomposerを実行します。

CygwinでPHP + Composerを正常に機能させるには次の2つの方法のいずれかを選択できます。

  1. Cygwin PHPをインストールし、composer.pharをCygwinにインストールします。

  2. Windows PHPをインストールしてWinodowsComposerをインストールし、Cygwinから呼び出します(cmdにエイリアスを持つWindows XAMMP + Composer)


あなたの問題は、Cygwin ComposerがCygwinのWindows PHPによって台無しになっているため、ファイルパスを認識できないことが原因です。

Cygwin PHPをインストールした後、composerはCygwin PHPと統合され、Cygwinのファイルパスに適合します。

Cygwin PHP composerの拡張機能:

php
php-json
php-mbstring
php-phar 
php-Zip
php-posix

php-xmlwriterphp-tokenizerphp-ctypeなど、作曲家のパッケージが必要な場合は、他のPHP拡張機能をインストールできます。


インストールコマンドガイド:

すでにインストール済みの場合 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

次に、ComposerをCygwin PHP経由でインストールします。

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で呼び出すことをお勧めします。CygwinPHPはWindowsPHPよりも安定性が低いためです。

3
Nick Tsai

私がしたこと(非常に簡単):

  • インストールComposer通常はWindowsインストーラーで
  • Cygwinコンソールをタイプcomposerで開くと、Could not open input file: /c/route/to/your/composer/installation/binのようなものが表示されます。
  • Bashプロファイルまたはbashrcなどにエイリアスcomposer='composer.bat'を作成します
  • 完了

私はWindows8.1を実行しています

3
nikoskip

私はこの問題を抱えていました。ほとんどの回答は頭に浮かびましたが、問題なく修正しました。

ステップ1)再インストールComposerに従ってグローバルに https://getcomposer.org/download/

ステップ2)そのままにしておきます。あなたがしたいすべての特別なもの、それをしないでください。

ステップ3)最新のsetup-xxx.exeを https://cygwin.com/ からダウンロードします

ステップ4)マウスでクリックします。

注:ステップ5の間に、指示を読んだり、Webで情報を閲覧したり、メニューの小さなボックスのチェックを開始したりすることを突然求められます。そうしないでください。

手順5)質問がなくなるまで[次へ]をクリックします。それはあなたの既存の設定を見て、物事を修正し、不足している依存関係を追加します。

これは私のために働いた。

2

最も簡単な方法は、WebサイトからWindowsインストーラーを使用してcomposerをインストールし、「C:\ ProgramData\Composer」から2つのファイル「composer」と「composer.phar」をディレクトリにコピーすることです。これはPATH変数にあります。たとえば、ファイルをcygwinの/ bin /ディレクトリにコピーできます。その後、「Windowsバージョン」のcomposerを再度アンインストールできます。

更新!これは私がしたことです:

  1. インストールPHPおよび必要なモジュール Cygwin Portsプロジェクト
  2. ダウンロード 最新composerスナップショット
  3. 「composer.phar」の名前を「composer」に変更し、/ usr/local/binに保存します
  4. /bin/dash.exeを開き、「/ usr/bin/rebaseall」を実行します
  5. また、4。でエラーが発生した場合は、composerをすぐに実行する必要があります
0
Thasmo

私はあなたがbabunを使用することをお勧めします、それはcygwinに基づいていますが、パッケージでパッケージをインストールすることができます、これを行うことができます:

pact install php php-json php-phar

php -r "readfile( ' https://getcomposer.org/installer ');" | php

その後、楽しんでください。

0
avatas

/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"

基本的に、cygwinパスではなく、Windowsスタイルのパスを使用してPHPを呼び出す必要があります。

0
Matthieu Napoli

composerをCygwin内でグローバルに機能させることは、お尻の痛みです...

私が思いついたソリューション:

  1. グローバルに使用しないでください。 PHP CLIをWindowsインストールから使用している場合、Cygwinが使用するLinuxパスを認識しません。

    私がやったことは、composerで使用するすべてのプロジェクトのベースディレクトリに配置し、../composer.pharを実行してそれを実行することです。

    この方法で正常に動作し、ほぼグローバルに利用可能です...

  2. 独自のPHP Cygwin内のバイナリをダウンロードしてコンパイルします...うん、ちょっとやり過ぎです。

0
Populus

CygwinでComposerを動作させるのに問題があり、上記の解決策で問題が解決しませんでした。最終的に私はComposer githubバグディスカッションで このコメント に遭遇しました:

うんTBH cygwinのphpを使用するのは良い考えではありません。cygwinは環境があまりにも違うのです。失敗を引き起こすハックが多すぎます。いずれにせよ、私たちにできることはあまりないので、ここで閉じます。恐れ入ります:)

どこでcomposer/Cygwin/phpがトリップしたのか正確にはわかりませんが、大まかに言って、私の問題は、環境変数にPHPの2つの競合するインストールがあったことでした。1つはWAMPのインストールからのもので、もう1つはCygwinとともにインストールされます。 Cygwin PHPのインストールは、ある種のパスの問題で苦労しているようです。 WAMP PHPのみを使用して削除し、composerはCygwinで問題なく実行されました。

0
wmf123

Cygwin/XAMPP設定でこのような問題を解決しました:

  • composer.pharをXAMPPのphpディレクトリにインストールします

  • XAMPPのcomposerディレクトリにphpという名前の実行可能なBashスクリプトを作成します。

    #!/bin/bash
    script_dir=$(cygpath -w $(dirname $0))
    php "$script_dir/composer.phar" $@
    

    パスをWindowsフォームのパスに変換するには、cygpath -wを使用することが重要です。

  • XAMPPのphpディレクトリがCygwinの$PATHでアクセス可能であることを確認してください。

    $ export PATH=$PATH:/cygdrive/i/dev/server/xampp/php
    


これで、どこからでも問題なくcomposerを呼び出すことができます。

    $ composer -V
    Composer version 264f433ca3f007d39568b3722b4bf418f58ba15b
0
Oliver