(丁寧な)Composer for Windows インストール

最近、Laravelを触ったりしてComposerを使うことが増えてきました。

まだ他人様のライブラリをインストールする時にしか使わないのですが、複数人数で開発するときなどは依存関係を管理できていると便利かもしれませんね。

で、Windows環境にインストールする際にちょっとだけ引っかかったところを書こうかと思いましたが、一通りの手順を書いておきます。

phpのインストール

Composerをインストールしようという方がphpをインストールしていないなんていうことがあるのかどうだか分かりませんが、phpが必要です。
現時点(2017/4/25)のComposer最新版では、php 5.3.2以上が必要です。
そして、

phpに関するほんの少しの設定とコンパイルフラグのセットが必要ですが、インストーラーがワーニングを出してくれます。

と書かれていて、Windowsなのでコンパイルフラグとか言われてもコンパイル済をインストールするのでそこがダメならどうしようもありませんが、Windowsに関する限りそのような事例はない様子です。

要件に沿ったphpを以下のURLからダウンロードし、インストールしてください。

http://windows.php.net/download

インストールは以下の手順です。
1.ダウンロードしたzipファイルを解凍
2.C:\php714などにリネーム&移動
3.上記ディレクトリにパスを通す
4.php.ini-developmentを同じディレクトリにコピーし、php.iniにリネームする。
  (ローカル開発環境という前提でphp.ini-developmentをベースにしていますが、php.ini-productionをコピーしてもいいですし、ファイルの中を変更しても構いません)

Composerのインストール

以下のURLからComposer-Setup.exeをダウンロードして実行してください。
https://getcomposer.org/download/

composer-download

実行すると、自分の世界に入り切ったコンダクターが現れます。
composer-install-1
「NEXT >」を押下します。
composer-install-2
Composerで使うphpを選択する画面が表示されます。
私の環境では少し古く、php 5.6.26です。
画面に表示されているのとは違うphpを使いたい方は、「Browse…」を押下して、お好きなphp.exeを選択してください。

選択したら、「NEXT >」を押下します。

こんなダイアログが表示された方へ

composer-install-3
何か、文句の付けどころがあるようです。
「The Openssl extension is missing from the PHP version your php.ini」
と言っています。
PHP versionって、選んだphpが悪かったのでしょうか。
違います。

php.iniで、opensslが使えるようになっていませんよ、と教えてくれています。
phpのインストールの項で前出の「phpに関するほんの少しの設定とコンパイルフラグのセットが必要ですが、インストーラーがワーニングを出してくれます。」を実践してくれただけです。
Composerがライブラリ類を取得する際に外部接続しますが、その際にHTTPSを使います。
そのためには、phpでopensslが使えるようになっている必要があります。

このダイアログの一番下に
「Disable this requirement – this option is not recomended」
というチェックボックスがあってopensslを使わないこともできるようですが、非推奨ですね。
しかし可能であればopensslを有効にし、推奨された方法にしましょう。
どうしてもopensslを使えない方や、この先を読む気がしない方はここにチェックを入れて「Next >」を押下してください。
お疲れ様でした。

それ以外の方は、ダイアログに表示されているphp.iniをテキストエディタで開いてみましょう。
「;extension=php_openssl.dll」という行があるはずです。
私のphp.iniでは以下のようになっています。
composer-install-4
アンダーラインの部分が該当行です。
行の先頭にセミコロンがあって、コメントアウトされています。
そのセミコロンを削除し、保存してください。
保存したらComposerのインストーラーで「< Back」を押下した後、再度「Next >」を押下すると次の画面に進むことができます。
もし、

Program Output:
Warning: PHP Startup: Unable to load dynamic library ‘C:\php\ext\php_openssl.dll’ – 指定されたモジュールが見つかりません。
in Unknown on line 0

というエラーが出る場合には、
; extension_dir = "ext"
の先頭にあるセミコロンも削除しましょう。

また、環境によって違うエラーが出ることがあると考えられます。
画面に表示されたメッセージをよく読み、対応を実施してください。

composer-install-5

Composerがインターネットへ接続する際のプロキシサーバーを指定する画面です。
必要な方はチェックボックスにチェックをつけ、プロキシサーバーのURLを入力してください。
ダイレクトにインターネットへ接続している方は、空欄のままです。
「Next >」を押下してください。

Proxyがどうとか良く分からないことを言っている、と思った方へ

念のためにPCのProxy設定を確認してみましょう。
Windows 10であれば、Windowsメニューがから「Windowsの設定」を開き、「ネットワークとインターネット」をクリックしてください。

composer-install-6

今度は、一番左下にある、「プロキシ」をクリックします。
そうすると、あなたのPCでインターネット接続に使われているProxyサーバーの設定が表示されます。
composer-install-7

私の例では「プロキシ サーバーを使う」がオフになっており、アドレス、ポートがグレーアウトされていて、プロキシサーバーを使っていない状態です。
このような方は、Composerインストーラーの「Next >」を押下してください。
そうでない方は、「Use a proxy server to connect to inernet.」にチェックを入れ、テキストボックスに先ほどのWindowsのプロキシサーバーの「アドレス」と「ポート」をコロンでつないだものを入力してください。
例えば、「proxy.sample.com:1080」などのような形式です。

composer-install-8
インストールの確認画面です。
私の場合はProxyサーバーを入力したので、それが表示されています。
問題なければ「Install」を押下し、インストールを実行してください。

composer-install-9
インストール完了画面です。
「PCの環境を変更したので、新しくコマンドウィンドウを開け」だの「エクスプローラーを全て閉じろ」だの「一旦ログオフしろ」だの、小姑のようです。
しかし、すでに開いているコマンドウィンドウには変更されたパスなどが反映しないので、直に新しくコマンドウィンドウを開きましょう。

「Next >」を押下すると、入り切っちゃってる人の顔を再度おがむことができます。composer-install-1

コマンドウィンドウでcomposerと打ってエンターを押下し、以下のような画面が出れば成功です。
composer-install-10

早速使ってみましょう。

Could not open input file: composer.phar の解決方法

さて、私個人的なことではございますが、今回、Composerをインストールした目的であるところの、Google Calendar APIのライブラリを取得してみます。

> php composer.phar require google/apiclient:^2.0
Could not open input file: composer.phar

composer.pharが見つからないとのことです。

どこにあるのでしょうか?C:\ProgramData\ComposerSetup\bin\composer.pharにあります。
同じディレクトリにcomposer.batもありますが、composerコマンドで呼び出されているのはこのファイルです。

なので、php composer.phar require ・・・でphpに読み込ませるにはcomposer.pharをフルパスで、あるいはcomposer.pharをコピーして・・・ということではありません。
いろいろ検索して、echo @php "%~dp0composer.phar" %*>composer.batを実行して・・・ということでもありません。
その実行結果が先ほどのcomposer.batにすでに反映されています。

結論は、composer.pharを指定しなくても勝手に読み込んでくれるのです。
先ほどのGoogle Calendar APIのライブラリを取得するためには、以下のようにします。

> composer require google/apiclient:^2.0