HomebrewでPHP7.2を導入する

# はじめに

開発環境をWindowsからMacに移したので、ガシガシ環境構築中です。
最近のMacはすごいですね、デフォルトでPHP7.1装備とは。

とはいえ、最新バージョンはPHP7.2。
composer入れたかったこともあり、ついでにHomebrewでサクッとアップグレードしちゃいました。
その手順を記します。

# Homebrewのインストール

まずはここから。
[公式](https://brew.sh/index_ja.html)に従って、コマンドをターミナルに貼り付けるだけ。簡単。

```
$ /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
```
```
$ brew --version
Homebrew 1.5.1
Homebrew/homebrew-core (git revision 6236; last commit 2018-01-22)
```

問題なし。

# PHP7.2のインストール

composerをHomebrewで入れるには、先に **Homebrewでインストールした** PHPが必要とのこと。
cf. [MacにHomebrewでComposerをインストールしました - Qiita](https://qiita.com/pugiemonn/items/44b426c9c3475299c18f)

> HomebrewのPHPを先に入れろとあります。おそらくMacデフォルトのPHPではだめなのだと思います。

作業前に、MacデフォルトのPHPの状態をチェック。

```
$ php -v
PHP 7.1.7 (cli) (built: Jul 15 2017 18:08:09) ( NTS )
Copyright (c) 1997-2017 The PHP Group
Zend Engine v3.1.0, Copyright (c) 1998-2017 Zend Technologies
$ 
$ which php
/usr/bin/php
```

## Let's brew install

では入れていきましょう。

…と、その前に、インストールする時の名前が分からないので、`brew search`で先に調べます。

```
$ brew search php72
==> Searching local taps...
==> Searching taps on GitHub...
homebrew/php/php72                       homebrew/php/php72-mosquitto
homebrew/php/php72-amqp                  homebrew/php/php72-msgpack
homebrew/php/php72-apcu                  homebrew/php/php72-mustache
homebrew/php/php72-apcu-bc               homebrew/php/php72-oauth
homebrew/php/php72-ast                   homebrew/php/php72-opcache
homebrew/php/php72-blitz                 homebrew/php/php72-pcntl
homebrew/php/php72-couchbase             homebrew/php/php72-pdo-dblib
homebrew/php/php72-ds                    homebrew/php/php72-pdo-pgsql
homebrew/php/php72-ev                    homebrew/php/php72-phalcon
homebrew/php/php72-event                 homebrew/php/php72-propro
homebrew/php/php72-gearman               homebrew/php/php72-pspell
homebrew/php/php72-geoip                 homebrew/php/php72-raphf
homebrew/php/php72-geos                  homebrew/php/php72-rdkafka
homebrew/php/php72-gmagick               homebrew/php/php72-redis
homebrew/php/php72-gmp                   homebrew/php/php72-ref
homebrew/php/php72-grpc                  homebrew/php/php72-snmp
homebrew/php/php72-hprose                homebrew/php/php72-ssh2
homebrew/php/php72-http                  homebrew/php/php72-stats
homebrew/php/php72-igbinary              homebrew/php/php72-swoole
homebrew/php/php72-imagick               homebrew/php/php72-tidy
homebrew/php/php72-intl                  homebrew/php/php72-timecop
homebrew/php/php72-lua                   homebrew/php/php72-timezonedb
homebrew/php/php72-lz4                   homebrew/php/php72-trader
homebrew/php/php72-lzf                   homebrew/php/php72-uopz
homebrew/php/php72-mailparse             homebrew/php/php72-uv
homebrew/php/php72-maxminddb             homebrew/php/php72-v8js
homebrew/php/php72-mecab                 homebrew/php/php72-xdebug
homebrew/php/php72-memcached             homebrew/php/php72-xxtea
homebrew/php/php72-meminfo               homebrew/php/php72-yac
homebrew/php/php72-molten                homebrew/php/php72-yaml
homebrew/php/php72-mongodb
==> Searching blacklisted, migrated and deleted formulae...
```

`homebrew/php/php72`というのがインストールする時のformulaeの名前なようです。
[Webtatic](https://webtatic.com/)などのリポジトリからインストールする時とは、全く名前が違うので、各々どんな用途で使えるのか、改めて調べる必要がありそうです。
`homebrew/php/php72-xdebug`とかは分かりやすくて有り難いですが。

とりあえず今回は`homebrew/php/php72`だけ入れてみましょう。

```
$ brew install homebrew/php/php72
==> Tapping homebrew/php
Cloning into '/usr/local/Homebrew/Library/Taps/homebrew/homebrew-php'...
~~中略~~
To have launchd start homebrew/php/php72 now and restart at login:
  brew services start homebrew/php/php72
==> Summary
🍺  /usr/local/Cellar/php72/7.2.1_12: 350 files, 46.6MB
$ php -v
PHP 7.1.7 (cli) (built: Jul 15 2017 18:08:09) ( NTS )
Copyright (c) 1997-2017 The PHP Group
Zend Engine v3.1.0, Copyright (c) 1998-2017 Zend Technologies
```

あれ？反映されてない。。。と思ったら。

`To have launchd start homebrew/php/php72 now and restart at login`

なるほど。ターミナルを再起動すれば良いんですね。
ターミナル再起動して改めて。

```
$ php -v
PHP 7.2.1 (cli) (built: Jan  5 2018 17:34:14) ( NTS )
Copyright (c) 1997-2017 The PHP Group
Zend Engine v3.2.0, Copyright (c) 1998-2017 Zend Technologies
$ which php
/usr/local/bin/php
```

問題ありませんね。
パスも`/usr/bin/php`から、Homebrewが使用する`/usr/local/bin/php`に変わってますね。

これでリリースされたてのPHP7.2の新機能も試せますね。
Macはあらゆる環境構築が楽で助かります。

---

ここから先はおまけです。

# homebrew/php/php72の中身

先述しましたが、Webtaticなどから入れるのと勝手が違ったので、中にどんなモジュールが含まれてるのか覗いてみました。
せっかくなので、別記事にします。

[homebrew/php/php72にどんなモジュールが含まれてるか覗いてみた - Qiita](https://qiita.com/saken649/items/1a1d5083cb30c2b55f58)

一通り必要なモジュール揃ってますね。楽ちん。

# composerのインストール

~~これも別記事に。~~
別記事にするほどボリューム無かったので統合。

まずは`brew search`してformulaeの名前を調べます。

```
$ brew search composer
==> Searching local taps...
homebrew/php/composer      homebrew/php/composer@1.2  homebrew/php/composer@1.5
==> Searching taps on GitHub...
==> Searching blacklisted, migrated and deleted formulae...
```

何やら3つヒットしましたが、違いがよく分からないので、ここは素直に無印版を。

```
$ brew install homebrew/php/composer
==> Installing composer from homebrew/php
==> Downloading https://homebrew.bintray.com/bottles-php/composer-1.6.2.high_sie
######################################################################## 100.0%
==> Pouring composer-1.6.2.high_sierra.bottle.tar.gz
==> Caveats
      composer no longer depends on the homebrew php Formulas since the last couple of macOS releases
      contains a php version compatible with composer. If this has been part of your workflow
      previously then please make the appropriate changes and `brew install php71` or other appropriate
      Homebrew PHP version.
==> Summary
🍺  /usr/local/Cellar/composer/1.6.2: 5 files, 1.8MB
```

終わったっぽいので、入ったのかどうか確認してみましょう。

```
$ composer
   ______
  / ____/___  ____ ___  ____  ____  ________  _____
 / /   / __ \/ __ `__ \/ __ \/ __ \/ ___/ _ \/ ___/
/ /___/ /_/ / / / / / / /_/ / /_/ (__  )  __/ /
\____/\____/_/ /_/ /_/ .___/\____/____/\___/_/
                    /_/
Composer version 1.6.2 2018-01-05 15:28:41
```

終了。
さっき3つヒットしたうちの、残り2つは古いバージョンみたいですね。なるほど。
無印版で正解だったようです。