こんにちは。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
など入力してしまったことで、
作成されてしまう同名のディレクトリを削除しておきましょう。
お仕事ください!
僕が代表を務める 株式会社 EeeeG では Web 制作・システム開発・マーケティング相談を行っています。 なにかお困りごとがあれば、Twitter DM や Web サイトからお気軽にご相談ください。
カテゴリ「Develop」の最新記事
助かりました。
macOSX mojave で
Laravel のデバッグをVsCodeで使用するために
pecl install xdebug
というコマンドを成功させる必要があり、
pecl コマンド使っても intl 導入できなかった話 (未解決)の項目のエラー(php.hがnot foundになる)
で詰んでしまい途方に暮れていましたが、このページに記載のphpの入れ直しで解決しました。
ただ、読むの遅くてやっちゃダメっていう記事を先に読んでしまい、そのコマンド打ってしまっているので、心配ですが、引き続きやってみます。
ありがとうございました。