【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 に限らず、Mac 環境に独自追加したソフトウェアを使うには、
/usr/local/bin を PATH に追加する必要があります。

which php コマンドで /usr/bin/php と表示されたら、
現在 Mac デフォルトの PHP が適用されており、そこに intl が入っていません。

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 
         ^~~~~~~
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 など入力してしまったことで、
作成されてしまう同名のディレクトリを削除しておきましょう。

コメントを残す

*