【pecl?brew?】MacのPHPのintlインストール方法

  • このエントリーをはてなブックマークに追加
  • Pocket

こんにちは。タクマ™ [@suwaru_blog] です。

Mac のローカル開発環境で Web サーバを立ち上げようとすると、
PHP Fatal error: You must enable the intl extension
といったエラーが出ることがあります…

これは intl という PHP 拡張が入ってないよというエラーです。

結論としては brew install php@7.1 (PHP 7.1 系の場合) で PHP 本体ごとインストール!
環境変数 PATH に /usr/local/bin が通っていれば、それで OK なはずです。

僕は PATH 設定を見落としていて、めっちゃ原因を考えました…

Mac 環境で PHP を動かす方法

Mac に Homebrew をインストールしてください。それで brew コマンドが使えます。

Homebrew 公式) https://brew.sh/index_ja

以下コマンドを実行して PHP をインストールしてください。

# バージョンは 7.1 以降であること
brew install php@バージョン

PATH の確認方法

今回の PHP に限らず、独自に追加したソフトウェアを使うためには、
PATH に /usr/local/bin を追加しておく必要があります。

もし which php コマンドで /usr/bin/php と表示されたら、
Mac デフォルトの PHP が適用されていて、そこに intl は入っていません!
※ 独自追加した PHP が適用されていない。

PHP Fatal error: You must enable the intl extension

その結果、上記エラーが表示されてしまう可能性があります。

PATH を通す

というわけで /usr/local/bin を PATH に追加してみましょう。
echo $SHELL で使っているシェルを確認してください。

代表的なシェルである bash と zsh の場合を解説します。
その他のマニアックなシェルを使っている人は PATH の通し方くらいわかりますよね?

シェルが bash の方

~/.bash_profile

export PATH=/usr/local/bin:$PATH

シェルが zsh の方

~/.zshenv

export PATH=/usr/local/bin:$PATH

ファイルを保存したら Terminal の画面を一度閉じて、開き直します。

イマイチ PATH ってよくわからないんだよなって人

PATH について Emacs の記事で詳しく解説しているので、参考にしてみてください。

brew コマンド経由で PHP を設定しなおす

PATH を修正したら brew link --force php@バージョン で brew の PHP に変更してください。

which php コマンドで /usr/local/bin/php と表示されたら OK です。

これでエラーが解消されるか確認してみてください。

なんで今更こんな当たり前のこと記事にしたの?

intl インストールの「古く・誤った情報」が多くて、時間を溶かしまくったからです。
以下リンクを参考に、正解にたどり着くことができました。

古く・誤った情報って? (読み飛ばして OK)

intl についてググると、以下の情報が出てきて混乱しました。

  • brew install homebrew/php/php71-intl で intl 導入せよという回答🙅‍♂️
    • 2020 年現在、intl 単体を brew インストールできません
    • PHP 7.1 以降は本体と一緒に intl がバンドルされるようになったため
      • 「バンドルなんてされてないよ」ってガセ情報・議論がさらなる混乱の原因に…
  • Xcode のコマンドラインを最新化せよという回答🙅‍♂️
    • 直接の解決理由にはならず…
  • pecl コマンドで intl インストールせよという回答🙅‍♂️
    • やったらエラーでこけました…

pecl コマンド使っても intl 導入できなかった話 (未解決)

しつこいですが「素直に brew を使う・PATH 設定を見直す」で OK です。
pecl コマンドでやろうと sudo pecl install intl したら下記エラーに遭遇。

/private/tmp/pear/install/intl/php_intl.h:23:10: fatal error: 'php.h' file not found
#include <php.h>
         ^~~~~~~
1 error generated.
make: *** [php_intl.lo] Error 1
ERROR: `make' failed

その場合、以下のコマンドを入力したらいいよ〜って回答もありましたが、やっちゃだめ。

# 以下のコマンドは入力不要
sudo php -d detect_unicode=0 go-pear.phar

# Type 1 and press return.
# Enter: /usr/local/pear
# Type 4 and press return.
# Enter: /usr/local/bin
# Press return
# Verify PEAR

これを入力すると brew link --force php@7.1 するとき、コケてしまいます。

その場合 /usr/local/pear など入力してしまったことで、
作成されてしまう同名のディレクトリを削除しておきましょう。

お仕事ください!

僕が代表を務める 株式会社 EeeeG では Web 制作・システム開発・マーケティング相談を行っています。
なにかお困りごとがあれば、Twitter DM や Web サイトからお気軽にご相談ください。

カテゴリ「Develop」の最新記事

最新記事

コメント

  1. misskabu より:

    助かりました。
    macOSX mojave で
    Laravel のデバッグをVsCodeで使用するために
    pecl install xdebug
    というコマンドを成功させる必要があり、
    pecl コマンド使っても intl 導入できなかった話 (未解決)の項目のエラー(php.hがnot foundになる)
    で詰んでしまい途方に暮れていましたが、このページに記載のphpの入れ直しで解決しました。
    ただ、読むの遅くてやっちゃダメっていう記事を先に読んでしまい、そのコマンド打ってしまっているので、心配ですが、引き続きやってみます。
    ありがとうございました。

コメントを残す

*