composer requireとcomposer global requireはどちらもcomposerを使いPHPパッケージをインストールするコマンドだが、以下の違いがある。
composer require <パッケージ名>
あるWEBアプリのプロジェクトを作成する場合など、なんらかのプロジェクト単位でパッケージを管理したい場合に使用するコマンド。
例えばあるWEBアプリのプロジェクト専用のパッケージを管理したい場合を考える。
プロジェクトの最上位のディレクトリでパッケージを管理したいとして、その最上位のディレクトリへ移動し、composer require <パッケージ名>を実行する。
コマンド実行したカレントディレクトリにvendorディレクトリが作成され、その中にパッケージが格納される。
このvendorディレクトリでプロジェクト専用のパッケージを管理する。
composer global require <パッケージ名>
プロジェクト単位で管理したいパッケージでなく、どのディレクトリからでも使用するパッケージを管理したいなど、つまりシステム単位で使用するパッケージを管理したい場合に使用するコマンド。
例えば、composer global require "laravel/installer"というlaravelプロジェクトを作成するためのインストーラーを追加するコマンドがある。
laravel/installerというパッケージはプロジェクト単位で管理するようなパッケージではないためglobalでパッケージ追加することが一般的。
globalでパッケージを追加した場合、どのディレクトリにパッケージが追加されるかというと、OSにより異なる。
macOS: $HOME/.composer/vendor/bin
Windows: %USERPROFILE%\AppData\Roaming\Composer\vendor\bin
GNU/Linuxディストリビューション:
\$HOME/.config/composer/vendor/binもしくは、$HOME/.composer/vendor/bin
またコマンドでも確認できる。
composer global config home