macOS(Catalina)で composer install した時に php-intl が見つからなくてエラーになった

タイトル長いっすね。

始まり

macOSに初期で入っていたPHPcomposer installをしたら、
php-intlがないとエラーがでて実行できなかった。悲しい...

結論

解決方法として、次の二通りの方法があります。
VagrantやDockerを使うとかを除けば)
私はpearを入れるのが面倒だったのと、7.3を入れたかったのでまとめていれる2つ目をやりました 。
(最終的にDockerを使うことになるのですがそれはまた別の話)

  1. php-intlをインストールする
  2. homebrewで新しくPHPをインストールする

原因

調べてみたら、MacOSのデフォルトのPHPでは 、php-intlが入っていなかったのが原因だったようでした....
次のコマンドを実行して見るとintl関連の出力されないのでされるようにするのがこのエントリーの内容
(もし出力されたら、別の要因なのでこのエントリーの内容では解決しないかもしれない...)

$ php -i | grep intl

1.php-intlをインストールする

初期からmacOSにインストールされているPHPphp-intlをインストールする方法です。
もしもpearがインストールされていなければ、先にインストールしないといけないです。

1.0 (オプション)pearをインストール

次の記事を参考にpearを事前にインストールする qiita.com

1-1.intlのインストール

あとは、次のコマンドでintlをインストールするだけです。

sudo pecl install intl

2.homebrewで新しくPHPをインストールする

Gitやzshの最新を入れるためによくやる、homebrewからインストールする方法。
homebrew経由だとintlを初期から使えるので、homebrewからインストールするだけで解決する。
今回は、バージョン7.3を入れたかったので7.3系のインストールしたときの方法を書きます。

1.新しくPHPを入れる

次のコマンドを実行してPHPの7.3をインストールする。

 $ brew install php@7.3

2-2.パスを通す

インストールしたPHPコマンドのパスを通して使えるようにします。
私は、zshを使っているので.zshrcにしていますが、bashなら.bash_profile.bashrcに書き込むといいと思います。

$ echo export PATH="/usr/local/opt/php@7.3/bin:$PATH" >> ~/.zshrc
$ echo export PATH="/usr/local/opt/php@7.3/sbin:$PATH" >> ~/.zshrc

2-3.シェルの再読み込み

次のコマンドを実行してシェルを再読み込み。
これパスがあっていれば使えるはず

$ exec $SHELL -l

次のコマンドで、intlが使えるようになっているか確認

$ php -i | grep intl

2-4.古い設定ファイルを移動

今使っている設定ファイルだとphp-intlが使えないので、次のフォルダのconf.dを別の場所に置いておく。

$ mv /usr/local/etc/php/{初期インストールされているのPHPバージョン}/conf.d /usr/local/etc/php/{初期インストールのPHPバージョン}/conf.d.bk

最後に

今回は2の方法では、7.3をインストールしましたが、
brew install phpで最新をインストールできます、このエントリーのコマンドから@7.3を抜けばできるはず。
(試していないのでわかりません。)
正直なところ、参照文献を読めば解決するので、このエントリーはいらない気がする。
でも、2回ぐらい同じことやっていたので個人のメモとして残します。

参照文献

素晴らしい記事を書かれた方々に感謝