こんにちは。iQeda [@iQeeeda] です。
Mac のローカル開発環境で Web サーバを立ち上げようとすると、PHP Fatal error: You must enable the intl extension
といったエラーが出ることがあります...
結論としては 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 など入力してしまったことで、
作成されてしまう同名のディレクトリを削除しておきましょう。
No comments yet