ということをやりましたので、その記録。なお、タイトルに「Bash on Windowsで~」と書いときながら、たぶん普通にUbuntuで構築するのと変わらないと思います。

今回書いてないことと注意点について


今回、下記については書いてません。

  • Composerの書き方
  • Composerの動作など

これは私がComposerよくわかってないので書きません。Composer関連に設定(jsonやlock)は既に動作しているものを使用しているからです。いや、解ってないもの使うなってツッコミはあると思いますが、ちょっと弊社やること多すぎてそこまで覚えるパワーがまわせません。

また、Bash on Windowsを使ってComposerで依存パッケージをインストールできるのは確認してますが、 Windows上でBash on WindowsでPHPの開発(実行環境の構築)できるかどうかは確認してません。 これは、Docker for Windowsでソースコードだけホスト(Windows)に置いて、PHPの実行環境はDocker上で構築したものを使用する予定だからです。従って、必要なパッケージさえ取得できれば実行環境はいらないからです。

以下、全てBash on Windowsで作業しています。

PHPのリポジトリ追加とインストール


apt-add-repositoryでphpのリポジトリを追加します。

1
sudo apt-add-repository ppa:ondrej/php

パッケージの更新を行います。

1
sudo apt-get update

PHPをインストールします。この時にバージョンを指定します。今回は5.6でやってますが、おそらく7.x系でも以降の作業は同じだと思います。以降5.6でやってますが、適当にバージョン置き換えてやってください。

1
sudo apt-get install php5.6

PHP拡張モジュールのインストール


Composerでパッケージによってはzipで配布しているものがあるので、PHP拡張モジュールのzipをインストールします。

1
sudo apt-get install php5.6-zip

こいつをインストールしていないと、Composerでパッケージのインストールを行う際に(zip形式での配布のパッケージがあった場合)大激怒したComposer大明神に下記のような激しい赤色のメッセージで怒られます。(実際は真っ赤かなメッセージです)

1
2
Update failed (The zip extension and unzip command are both missing, skipping.
The php.ini used by your command-line PHP is: /etc/php/5.6/cli/php.ini)

Composerのインストール


作業ディレクトリ(composer.jsonとかlock)があるところでcurlコマンドでComposerをインストールします。

1
2
3
4
5
6
7
curl -sS https://getcomposer.org/installer | php

All settings correct for using Composer
Downloading...

Composer (version 1.4.1) successfully installed to: /mnt/d/php-sample/composer.phar
Use it: php composer.phar

何事もなければ上記のような感じでインストール完了します。

Composerを使用してパッケージのインストール


Composerを使用したパッケージのインストールは下記のコマンドで行います。

1
./composer.phar install

で、これを実際にやってみると…

1
2
3
4
5
6
7
8
9
10
11
12
13
./composer.phar install

Loading composer repositories with package information
Installing dependencies (including require-dev) from lock file
Your requirements could not be resolved to an installable set of packages.

Problem 1
- Installation request for phpunit/phpunit 4.8.31 -> satisfiable by phpunit/phpunit[4.8.31].
- phpunit/phpunit 4.8.31 requires ext-dom * -> the requested PHP extension dom is missing from your system.
Problem 2
- phpoffice/phpexcel 1.8.1 requires ext-xml * -> the requested PHP extension xml is missing from your system.
- phpoffice/phpexcel 1.8.1 requires ext-xml * -> the requested PHP extension xml is missing from your system.
- Installation request for phpoffice/phpexcel 1.8.1 -> satisfiable by phpoffice/phpexcel[1.8.1].

だいたい、上記のような感じで怒られると思います。要するにパッケージが使用しているPHPの拡張モジュールがインストールされてないということです。ですので、メッセージに応じて必要なPHP拡張モジュールをインストールします。

インストール後に再度./composer.phar installを実行します。

1
2
3
4
5
6
7
8
9
./composer.phar install

Loading composer repositories with package information
Installing dependencies (including require-dev) from lock file
Package operations: 6 installs, 15 updates, 0 removals

...このへんパッケージがずらずらインストールされていく...

Generating autoload files

こんな感じでComposerを利用したパッケージのインストールが完了します。

まとめ


なんか、Bash on Windowsは関係なかったような気がしなくもないのですが、Bash on Windowsでやってみた人とかあんまりいないと思うので記事を書いてみました。