Composer」タグアーカイブ

Windows環境のComposerを複数PHPバージョンで使い分ける

Windows環境におけるPHP複数バージョン導入は比較的簡単です。例えばCドライブ配下に複数のPHPをzip展開、php.iniの設定を行うだけでOKです。

c:\php\php56\php.exe
c:\php\php70\php.exe
c:\php\php71\php.exe

実際に使う際はこの中からデフォルトとして使うバージョンに環境変数を通しておきます。

c:\php\php56\php.exe
c:\php\php70\php.exe ←環境変数を通してデフォルトで使われるPHPにしておく。
c:\php\php71\php.exe

例えばPHPのビルトインWebサーバーを使う際、デフォルトで使うバージョン以外を使いたいプロジェクトではフルパスで別パスのphpを起動してやればいいです。

c:\php\php71\php.exe -S localhost:8080

ここで、Composerが問題になってきます。WindowsにインストールしたComposerは環境変数に設定されたデフォルトのPHPで実行されるので、PHP 7.1を使っているプロジェクトでPHP 7.1を求めるライブラリを導入したい場合などに、ComposerのチェックでPHPのバージョンが足りないと言われエラーになってしまいます。また、適切にcomposer.jsonが設定されていなければPHP 5.6のプロジェクトで7.0が必須のライブラリをインストールしてしまうかもしれません。

このComposerコマンドの実行ファイルは実際にはバッチファイルになっています。このファイルはインストール時に設定を変えていなければ

C:\ProgramData\ComposerSetup\bin

にインストールされています。
(コマンドプロンプトであれば where コマンドでコマンドのインストール先が分かります)

中に記載されているのは

@ECHO OFF
php “%~dp0composer.phar” %*

だけですので、このファイルを複製し

@ECHO OFF
c:\php\php71\php.exe “%~dp0composer.phar” %*

のようにしてあげれば、PHP 7.1で起動するComposerコマンドを作る事が出来ます。

PHP 7.1のプロジェクト上でComposerコマンドを利用する際はcomposerコマンドではなく

composer_php71.bat install

のように利用すればOKです。

なお、Composerがプロジェクトごとではなくグローバルにインストールするパッケージについては全てのプロジェクトに影響が及びますので、その点はご注意ください。

ちなみに phpunit コマンドも同様にバッチファイルになっているので、同様に複数PHPバージョンのバージョンを用意しておくことができます。

Windows環境にちゃんと動くComposerを導入する

2016年1月現在においてPHPで何かを作るうえで、パッケージ管理ツール(兼、便利なクラスオートローダー)であるComposerを使う機会は多いと思います。そしてこのComposerはWindows環境においても簡単に導入できるのですが、実際にComposerを使ってパッケージを導入してみようと思うと内部でGitコマンドを呼び出していたりと動かないことがありますのでその辺まで含めて簡単にまとめてみたいと思います。

0.PHPをインストール済み

http://windows.php.net/download
既に導入済みかとは思いますがWindows版PHPをインストールしておきます。ファイルを展開し C:\php\バージョン\ あたりにでも展開、環境変数にパスを設定して、あとはphp.iniのタイムゾーンやら基本的な設定をしておきます。Windows 10は以前のWindowsに比べて環境変数が編集しやすくなってていいですね。

php環境変数設定

更に脱線すると、WebサーバはPHP内臓のビルトインサーバが使えますので、別途ApacheやXAMPP等をインストールしたりする必要は特にありません。DBを使いたい人はWindows版のMySQLなりPostgreSQLなりもどうぞ。

1.Composerをインストールする

https://getcomposer.org/
Windows版のインストーラがありますのでComposer-Setup.exeをダウンロード、実行でインストール完了です。途中、右クリックメニューにComposer関連のコマンドを追加するかのオプションが表示されますが、特に追加する必要はないかと思います。

もし、以下のような画面でインストールが失敗した場合、PHPのopensslエクステンションが有効になっていません。php.iniでopensslを有効にして再度実行してみてください。

composer_windows_openssl

php_ext_openssl

2. Git for Windowsのインストール

https://git-for-windows.github.io/
ここまででComposerの導入はできているのですが、実際に使おうと思うと内部でGitコマンドを呼んでいるなどして結局動かないことが多々あります。Gitコマンド含めLinuxコマンドも使える環境としてGit for Windowsを導入します。えっ、結局Linux互換環境入れちゃうの?と思われるかもしれませんが、基本的にComposerコマンドを使うときにコマンドプロンプトの代わりにGit Bashを開く程度で済みます。コンポーネントの選択でGit BashのチェックはデフォルトでONですので、そのままにしておきます。以下、注意が必要な選択肢。

1番目か3番目をお好みで。3番目の「Use Git and optional Unix tools from the Windows Command Prompt」を使う場合は記載の注意を要確認。

git_bash1

MinTTY(MSys2)を使います。

git_bash2

3. 使ってみる

ここまででインストール完了です。実際に使ってみます。インストール済みのGit Bashを起動します。

bit_bash_menu

おもむろに composer とタイプしてみます。動いた!

comoposer_for_gitbash

では実際にパッケージを導入してみます。今回はとりあえずCodeigniterを入れてみます。Codeigniterは公式のComposerパッケージがないのですが、@kenji_s 氏作成の使いやすい導入パッケージが利用できます。ありがたい。

CodeIgniter 3.0をコマンド一発でインストールするCodeIgniter Composer Installer

適当なインストール先ディレクトリを作成し移動、サンプルのコマンド通りに実行してみます。

composer_codeigniter

ComposerでCodeigniterが導入できました!せっかくなので動作確認まで行います。publicディレクトリまで潜り、php -S localhost:9090でビルトインサーバを起動、Webブラウザで開いてみます。

codeigniter_303_init

しっかり動いています!おしまい!