PHP
homebrew
PHP7
PHP7.2

HomebrewでPHP7.2を導入する

はじめに

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

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

Homebrewのインストール

まずはここから。
公式に従って、コマンドをターミナルに貼り付けるだけ。簡単。

$ /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

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などのリポジトリからインストールする時とは、全く名前が違うので、各々どんな用途で使えるのか、改めて調べる必要がありそうです。
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

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

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つは古いバージョンみたいですね。なるほど。
無印版で正解だったようです。