こんな経験はないだろうか。
ある日突然、いつものようにcomposer install
をすると物凄い勢いで怒られた、という経験が。
何を訳のわからんことを。
intl
ならとっくの昔に入れて、、、
$ php -m | grep intl
$
ん??
intl
が出てこない、、、
しゃあねぇ、もう一度インストールしますか。
$ brew install php71-intl
// 「php71-intl」など存在しない、と怒られる
ん??
結論
調べた結果、今までphp71-*
が含まれていたhomebrew/php
がdeprecatedになっており、homebrew/core
に含まれるようになっているらしい。
homebrew/php
homebrew/core
(参考)
homebrewでphp71-*系がインストールできなくなってた
やったこと
記事にしたがって以下を実施
・brewでインストールしているphp関連のfomura(リポジトリ的な)を全部消す
・homebrew/phpも消す
・新しくphp@7.1を入れる
・インストール後に表示されるメッセージにしたがってパスを通す
・古い設定ファイルを別ディレクトリに移動
・composer install
実行
brewでインストールしているphp関連のfomura(リポジトリ的な)を全部消す
・php関連のfomuraを確認
$ brew list | grep php
php71
php71-intl
php@7.1
一応homebrew/core内のphp@7.1
も入ってはいたが、php71
などが邪魔していた可能性があるので、一旦全部消す。
$ brew uninstall php71 php71-intl php@7.1
homebrew/phpも消す
非推奨なので消す。
$ brew untap homebrew/php
新しくphp@7.1を入れる
$ brew install php@7.1
もしかしたらこれも必要かも。
$ brew link --force php@7.1
インストール後に表示されるメッセージにしたがってパスを通す
上記を実行すると、パスを通すようメッセージが表示されるため、それにしたがってパスを通す。
正確にはパスを通すコマンドをbash起動時に毎回実行するように.bash_profile
にコマンドを記入する。
$ echo export PATH="/usr/local/opt/php@7.1/bin:$PATH" >> ~/.bash_profile
$ echo export PATH="/usr/local/opt/php@7.1/sbin:$PATH" >> ~/.bash_profile
// .bash_profileを実行
$ source ~/.bash_profile
パスが通っているか確認
$ which php
/usr/local/opt/php@7.1/bin/php
古い設定ファイルを別ディレクトリに移動
phpのバージョンを確認しようとするとエラーが出た。
$ php -v
PHP Warning: PHP Startup: Unable to load dynamic library '/usr/local/opt/php71-igbinary/igbinary.so' - dlopen(/usr/local/opt/php71-igbinary/igbinary.so, 9): image not found in Unknown on line 0
古い設定ファイルを読み込まないようにする。
$ ls /usr/local/etc/php/7.1/conf.d
ext-igbinary.ini ext-intl.ini ext-mcrypt.ini ext-opcache.ini ext-redis.ini
$ mv /usr/local/etc/php/7.1/conf.d/* ~/DeskTop/backup
エラーが消えてintlも入っていることを確認
$ php -v
$ php -m | grep intl
intl
最後にcomposer install
するとエラーが出ずに実行できた!