「グローバルに」インストールしようとすると、ComposerはCygwinで正しく実行されません。
Composer.pharを/ usr/local/bin/composerに入れて実行しようとすると、エラーが発生します。
Could not open input file: /usr/local/bin/composer
同じ問題につまずいて、解決策を見つけました。もう一度調べる必要がある場合に備えて、ここに投稿します。
/home/my-username
のすぐ下にbin
ディレクトリを設定します。
cd ~
mkdir bin
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
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" "$@"
ここでシェルを再起動すると、#!/usr/bin/env php
Shebangに遭遇するたびに、PHPインタープリターが正しく呼び出されます。単に:を発行します。
composer --help
これはどう?
alias composer='php c:\\your\\path\\to\\composer.phar'
source ~/.bashrc
を実行してbashrcをリロードしますCygwinのネイティブphp.exeとXAMPPのWindows固有のものの両方を使用して私のために動作します。
代わりにプロキシを作成するのが効果的だと思います。
以下を使用して、/ usr/local/bin/composerとしてbashプロキシを作成します。
#!/bin/sh
c:/path/to/php c:/path/to/composer.phar $@
chmod + x/usr/local/bin/composer
私も同じ問題を抱えていました。 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
そして、それは機能しています。
これを試して:
CygwinでPHP + Composerを正常に機能させるには次の2つの方法のいずれかを選択できます。
Cygwin PHPをインストールし、composer.pharをCygwinにインストールします。
Windows PHPをインストールしてWinodowsComposerをインストールし、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
php-xmlwriter
、php-tokenizer
、php-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よりも安定性が低いためです。
私がしたこと(非常に簡単):
composer
で開くと、Could not open input file: /c/route/to/your/composer/installation/bin
のようなものが表示されます。composer='composer.bat'
を作成します私はWindows8.1を実行しています
私はこの問題を抱えていました。ほとんどの回答は頭に浮かびましたが、問題なく修正しました。
ステップ1)再インストールComposerに従ってグローバルに https://getcomposer.org/download/
ステップ2)そのままにしておきます。あなたがしたいすべての特別なもの、それをしないでください。
ステップ3)最新のsetup-xxx.exeを https://cygwin.com/ からダウンロードします
ステップ4)マウスでクリックします。
注:ステップ5の間に、指示を読んだり、Webで情報を閲覧したり、メニューの小さなボックスのチェックを開始したりすることを突然求められます。そうしないでください。
手順5)質問がなくなるまで[次へ]をクリックします。それはあなたの既存の設定を見て、物事を修正し、不足している依存関係を追加します。
これは私のために働いた。
最も簡単な方法は、WebサイトからWindowsインストーラーを使用してcomposerをインストールし、「C:\ ProgramData\Composer」から2つのファイル「composer」と「composer.phar」をディレクトリにコピーすることです。これはPATH変数にあります。たとえば、ファイルをcygwinの/ bin /ディレクトリにコピーできます。その後、「Windowsバージョン」のcomposerを再度アンインストールできます。
更新!これは私がしたことです:
私はあなたがbabunを使用することをお勧めします、それはcygwinに基づいていますが、パッケージでパッケージをインストールすることができます、これを行うことができます:
pact install php php-json php-phar
php -r "readfile( ' https://getcomposer.org/installer ');" | php
その後、楽しんでください。
/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を呼び出す必要があります。
composerをCygwin内でグローバルに機能させることは、お尻の痛みです...
私が思いついたソリューション:
グローバルに使用しないでください。 PHP CLIをWindowsインストールから使用している場合、Cygwinが使用するLinuxパスを認識しません。
私がやったことは、composerで使用するすべてのプロジェクトのベースディレクトリに配置し、../composer.pharを実行してそれを実行することです。
この方法で正常に動作し、ほぼグローバルに利用可能です...
独自のPHP Cygwin内のバイナリをダウンロードしてコンパイルします...うん、ちょっとやり過ぎです。
CygwinでComposerを動作させるのに問題があり、上記の解決策で問題が解決しませんでした。最終的に私はComposer githubバグディスカッションで このコメント に遭遇しました:
うんTBH cygwinのphpを使用するのは良い考えではありません。cygwinは環境があまりにも違うのです。失敗を引き起こすハックが多すぎます。いずれにせよ、私たちにできることはあまりないので、ここで閉じます。恐れ入ります:)
どこでcomposer/Cygwin/phpがトリップしたのか正確にはわかりませんが、大まかに言って、私の問題は、環境変数にPHPの2つの競合するインストールがあったことでした。1つはWAMPのインストールからのもので、もう1つはCygwinとともにインストールされます。 Cygwin PHPのインストールは、ある種のパスの問題で苦労しているようです。 WAMP PHPのみを使用して削除し、composerはCygwinで問題なく実行されました。
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