正確には、HomebrewでインストールしたPHP7でbrew update
をした後、php-intlのエラーのせいでcomposer install
出来なくなった話です。
こんにちは、クックビズの杉田です。掲題の件ですが、直近二ヶ月で私の身の回りで4回も発生しました。ググってもググっても解決策が出てこずに、PHP ユーザーズ (日本語) on Slack!で聞いて解決したので、事例の共有ということで紹介します。
ちなみに、Slackで質問する前に以下の記事を参考にしました。(他にもみたけど忘れました)
ただ、書かれている方法を試してもダメだったり、Pearを入れるとか今どき絶対やりたくない解決法(参考にした記事が古い記事だったので仕方ない)だったりしました。
結論から言うと、
1 |
brew reinstall --build-from-source php70-intl |
これだけで直りました。
というわけで、同じ現象に悩まされている方は参考にしてください。
環境
問題が起きた人の環境は以下の通りでした。
- Mac OSX ElCapitan
- PHP 7.0.x (homebrewでインストール)
- php-intlはインストール済み (homebrewでインストール)
自分を含めて、状況を確認するとどうもbrew update
をしたあとでcomposer install
すると問題が発生したようです。
PHP5.6環境の同僚にも同じ問題が発生しました。
CakePHP3を使ってると同じ現象に遭遇する可能性が上がると思います。
起こった現象
おもむろにcomposer install
を実行すると…
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
$ composer install (省略) Problem 2 - cakephp/cakephp 3.3.6 requires ext-intl * -> the requested PHP extension intl is missing from your system. - cakephp/cakephp 3.3.6 requires ext-intl * -> the requested PHP extension intl is missing from your system. - cakephp/cakephp 3.3.6 requires ext-intl * -> the requested PHP extension intl is missing from your system. - Installation request for cakephp/cakephp (locked at 3.3.6) -> satisfiable by cakephp/cakephp[3.3.6]. To enable extensions, verify that they are enabled in those .ini files: - /usr/local/etc/php/7.0/php.ini - /usr/local/etc/php/7.0/conf.d/ext-intl.ini - /usr/local/etc/php/7.0/conf.d/ext-redis.ini You can also run `php --ini` inside terminal to see which files are used by PHP in CLI mode. Installation failed, reverting ./composer.json to its original content. |
あれ?!何でだ?!昨日まで動いてたのに!!
そんなはずは無いと思い、brew search php70-intl
で調べる。

php-intl入ってるやん!
対策
というわけで、冒頭のSlackグループで質問してたどり着いた解決策がこちら。
1 |
brew reinstall --build-from-source php70-intl |
ソースコードからphp70-intlをインストールし直してあげる。(PHP5.6環境の人は、php56-intlですね)
再度composer install
を叩くと、無事にインストールできました。
おまけ
今回のようにextensionがちゃんとロードされているかどうかを確かめるには、ターミナルでこうしてあげれば良いです。
1 |
php -r "var_dump(extension_loaded('intl'));" |
bool(true)
が表示されればphp-intlが入ってます。
または、単純にこちらでもOK!
1 |
php -m | grep intl |
結果にintl
が表示されれば、php-intlが入ってます。
現在、クックビズでは新しいメンバーを募集しております!
このブログを書いているのはクックビズ株式会社の開発チームです。私たちと働いてみたいと思った方はWantedlyから話を聞きにきて下さいヽ(=´▽`=)ノ著者プロフィール
- 開発部にいるのに何やってるの?と他のスタッフからよく思われてます。ブログ書いたり、社外勉強会でプレゼンしたり、やたらと会社の備品を増やしたり。ちゃんと仕事やってますよ?